简短地说。在萤火虫网络选项卡中,如果您没有看到您调用的 url 出现添加“return false;” 阻止您的表单正常提交(因为您将使用 Ajax 来完成)。
<form name="myForm" id="myForm" method="post" action="">
<input type="text" name="fieldName" id="fieldName" value="" />
<input value="Save" id="saveButton" type="submit">
<br /><span class="show_error"></span>
</form>
$(document).ready(function(){
$("#myForm").submit(function(){
processForm(); // do Ajax stuff
**return false;** // stop normal form submission so you can do it with Ajax.
});
function processForm(){
var fieldName = $('input[name="fieldName"]').val();
var request = $.ajax({
type: "POST",
url: "ajaxhandler.php",
data: { fieldName: fieldName},
dataType: "json" //Type of response to expect from server
});
request.done(function (msg){
console.log("Worked");
});
request.fail(function (textStatus){
$('.show_error').fadeIn(1000).html(textStatus);
console.error("Failed: "+ textStatus);
});
}
});
然后查看您的 ajax 提交的 url(在我的例子中是一个 php 文件)的响应选项卡,并确保它正在返回一些东西(在我的例子中是 json 编码的成功或失败消息)。如果它没有返回任何东西,你只会有一个错误,上面写着“错误”。
为什么什么都没有返回,为什么我不能得到任何错误细节?事实证明,当我使用端口 443 进行 ajax 调用时,我正在从与我自己的服务器不同的服务器加载我的 jQuery,而没有指定 https。
改变
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
至
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> was the fix for me.