Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/440.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Javascript提交表单_Javascript_Jquery_Forms - Fatal编程技术网

使用Javascript提交表单

使用Javascript提交表单,javascript,jquery,forms,Javascript,Jquery,Forms,我的一些表单是用Javascript/JQuery提交的,因此不会刷新页面 但我注意到我的两台电脑之间的浏览器有一种奇怪的行为。 在一台计算机(以及我测试过的所有浏览器)上,我的表单提交按预期执行。 我的另一台电脑(Mac)坏了。我将提交表单,它将进行典型的后期刷新。所以浏览器会刷新,我会在Url地址栏中看到我的按钮文本 -同样,我的电脑的浏览器不这样做 除非我疯了,否则我能推断的就是Mac上的浏览器没有正确执行javascript。但我更愿意看到我的编码端出现错误 我是否正确地确保表单没有与我

我的一些表单是用Javascript/JQuery提交的,因此不会刷新页面

但我注意到我的两台电脑之间的浏览器有一种奇怪的行为。 在一台计算机(以及我测试过的所有浏览器)上,我的表单提交按预期执行。 我的另一台电脑(Mac)坏了。我将提交表单,它将进行典型的后期刷新。所以浏览器会刷新,我会在Url地址栏中看到我的按钮文本

-同样,我的电脑的浏览器不这样做

除非我疯了,否则我能推断的就是Mac上的浏览器没有正确执行javascript。但我更愿意看到我的编码端出现错误

我是否正确地确保表单没有与我的Javascript一起提交

<form id="norefreshForm">
   <!--more form fields here -->
   <input type="submit" name="button" value="Submit Me" />
</form>

<script language="javascript" type="text/javascript">
$(document).ready(function(){

    $.ajaxSetup({
       global:false,
       cache:false,
       type:"POST",
       url:"<?=$_SERVER['REQUEST_URI'];?>",
       timeout:120000   
    });


    $("form#norefreshForm").submit(function(){

        $.ajax({ success:function(response){ alert("Submitted"); } });
        return false;
    });

});
</script>

$(文档).ready(函数(){
$.ajaxSetup({
全球:错,
cache:false,
类型:“POST”,
url:“”,
超时:120000
});
$(“表单#norefreshForm”).submit(函数(){
$.ajax({success:function(response){alert(“Submitted”);}});
返回false;
});
});
试试这个:

$("form#norefreshForm").submit(function(e){
        $.ajax({ success:function(response){ alert("Submitted"); } });
        e.preventDefault();
});

实际上,有些浏览器应该执行
e.preventDefault()
,而不是
返回false
 $("form#norefreshForm").submit(function(){
        e.preventDefault();//should be at the very top 
        $.ajax({ success:function(response){ alert("Submitted"); } });

    });

});

当您仅使用jQuery时,返回false就足够了。(对mac不是100%确定)

但是如果您还编写了纯javascript,那么在这种情况下,您可能还必须使用
preventDefault
stopPropagation

就IE而言,它更不一样。有时您必须使用
window.event.returnValue=false

因此,所有这些的结合将正常发挥作用

因此,将您的
return false
语句替换为

if (eventObject.preventDefault) {
    eventObject.preventDefault();
} else if (window.event) /* for ie */ {
    window.event.returnValue = false;
}
return false;
这将适用于PC和MAC


快乐编码

在表单中,尽量不要使用提交按钮。相反,您可以使用一个简单的按钮并在单击此按钮时绑定ajax调用

这样做的原因似乎是您同时发出两个请求,一个是通过提交按钮,另一个是您自己的ajax函数


第一次提交也会失败,因为您没有为表单指定action属性。

是否启用了javascript?这是第一个check@coffeemonitor你的代码正在运行,看看这里:(在Chrome和Firefox中测试)你得到解决方案了吗?原来这是一个浏览器问题。我已经在几台计算机和主要浏览器上进行了测试,我的Mac上的Chrome似乎不能很好地与javascript配合使用。
return false
。问题是另外一个。我认为jQuery规范化了
e.preventDefault
,可以在所有浏览器中工作。@elclanrs,是的,你可能是对的。但我还是使用了.preventDefault,而不是在ajax案例中返回false。以防万一。但是我真的希望如果jquery的人能解释一下!!jQuery明确地规范化了
e.preventDefault()
返回false。(如果您返回
false
jQuery调用
event.preventDefault()
)另外,Mamdouh,您是否愿意解释一下为什么您认为
e.preventDefault()
“应该”在最上面“?再读一遍我的答案。我说过这件事经常发生在我身上,我就是这样解决的。如果你有任何其他想法,请分享,因为这对我来说也是模棱两可的:)顺便说一句,这可能是浏览器问题,而不是JQ问题。只是一个想法@nnnnnnnn当按下提交按钮时,它触发提交事件,然后由OP显示的函数处理,该函数返回
false
以取消默认提交。无需更改按钮类型即可执行此操作。