Ajax成功和错误function失败

我无法让我的jQuery ajax正常工作。 它指向PHP页面以更新数据库,但永远不会返回脚本以获取成功或错误选项。

我的代码如下:

$(document).ready(function(){ $("form#updatejob").submit(function() { function textreplace(x) {return text.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&");} // we want to store the values from the form input box, then send via ajax below var job = $("#job").attr("value"); var description = $("#description").val(); description.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&"); var startDate = $("#startDate").attr("value"); var releaseDate = $("#releaseDate").attr("value"); var status = $("#status").attr("value"); $.ajax({ beforeSend:textreplace(description), type: "POST", url: "updatedjob.php", data: "jobID="+ job +"& description="+ description +"& startDate="+ startDate +"& releaseDate="+ releaseDate +"& status="+ status, success: function(){ $("form#updatejob").hide(function(){$("div.success").fadeIn();}); }, error: function(XMLHttpRequest, textStatus, errorThrown) { alert("Status: " + textStatus); alert("Error: " + errorThrown); } }); return false; }); }); 

和PHP:

  

试试这个:

 $.ajax({ beforeSend: function() { textreplace(description); }, type: "POST", url: "updatedjob.php", data: "jobID="+ job +"& description="+ description +"& startDate="+ startDate +"& releaseDate="+ releaseDate +"& status="+ status, success: function(){ $("form#updatejob").hide(function(){$("div.success").fadeIn();}); }, error: function(XMLHttpRequest, textStatus, errorThrown) { alert("Status: " + textStatus); alert("Error: " + errorThrown); } }); 

beforeSend属性设置为function() { textreplace(description); } 而不是textreplace(description)beforeSend属性需要一个函数。

还可以使用以下内容来捕获错误:

 $.ajax({ url: url, success: function (data) { // Handle success here $('#editor-content-container').html(data); $('#editor-container').modal('show'); }, cache: false }).fail(function (jqXHR, textStatus, error) { // Handle error here $('#editor-content-container').html(jqXHR.responseText); $('#editor-container').modal('show'); }); 

您可以按如下方式实现特定于错误的逻辑:

 error: function (XMLHttpRequest, textStatus, errorThrown) { if (textStatus == 'Unauthorized') { alert('custom message. Error: ' + errorThrown); } else { alert('custom message. Error: ' + errorThrown); } } 

我遇到了同样的问题,只需在我的ajax调用中添加一个dataType =“text”行即可修复它。 使dataType与您希望从服务器返回的响应匹配(“插入成功”或“出错”错误消息)。

这可能是一个旧post,但我意识到没有什么可以从php返回,你的成功函数没有如下的输入, success:function(e){} 。 我希望能帮助你。

这可能无法解决您的所有问题,但您在函数(文本)中使用的变量与传入的参数(x)不同。

更改:

 function textreplace(x) { return text.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&"); } 

至:

 function textreplace(text) { return text.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&"); } 

看起来它会有所帮助。

您正在发送一个包含为get实现的数据的post类型。 您的表格必须如下:

 $.ajax({ url: url, method: "POST", data: {data1:"data1",data2:"data2"}, ...