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"}, ...