$.ajax() success won't run function
我的问题是关于
这有效:
1 2 3 4 5 6 7 | $.ajax({ type: 'POST', url:"/getCodes.php?codes=billingCodes&parent="+$('#wClient').val(), dataType: 'json', success: window.alert("inside aJax statement") }); |
这不是:
1 2 3 4 5 6 7 8 | $.ajax({ type: 'POST', url:"/getCodes.php?codes=billingCodes&parent="+$('#wClient').val(), dataType: 'json', success: function(){ window.alert("inside aJax statement"); } }); |
在第一种情况下,我得到一个JavaScript警报窗口,让我知道我调用的
这一点是验证$ .ajax是否正在运行,所以当$ .ajax成功运行时,我可以在
在您的第二个示例中,除非您从服务器成功回拨,否则不会发生任何事情。添加一个错误回调,正如许多人建议的那样,确实ajax请求确实有效,但服务器当前没有发送有效的响应。
1 2 3 4 5 6 7 8 9 10 11 | $.ajax({ type:"POST", url:"/getCodes.php?codes=billingCodes&parent="+$('#wClient').val(), dataType:"json", success: function(response){ alert(response); }, error: function(jqXHR, textStatus, errorThrown){ alert('error'); } }); |
有用的链接跟踪错误。
你的第一个例子没有做任何事情来证明
你的第一个例子与此基本相同:
1 2 3 4 5 6 7 8 9 10 | // THIS IS NOT A CORRECTION, IT'S AN ILLUSTRATION OF WHY THE FIRST EXAMPLE // FROM THE OP IS WRONG var alertResult = window.alert("inside aJax statement"); $.ajax({ type: 'POST', url:"/getCodes.php?codes=billingCodes&parent=" + $('#wClient').val(), dataType: 'json', success: alertResult }) |
例如,首先调用并显示
你的第二个例子是正确的。如果您在第二个示例中没有看到警报,则表示
这是100%你的第二个例子是正确的。它什么都不做?也许是因为ajax调用没有成功。
添加"错误"处理程序并检查waht使用浏览器的开发人员工具 - >网络 - > XHR返回您的ajax调用。这确实有助于处理损坏/不正确的ajax请求
我认为你做得对,但你的要求没有成功。尝试添加错误处理程序:
1 | error: function(){alert("Error");}; |
我猜数据类型不匹配或类似的东西。
在第一种情况下,当您运行$ .ajax时,window.alert会立即执行
第二个它只在你收到服务器的答案时运行,所以我怀疑你的ajax请求有问题
您可能想尝试使用承诺:
1 2 3 4 5 6 7 8 9 10 11 12 13 | var promise = $.ajax({ type: 'POST', url:"/getCodes.php?codes=billingCodes&parent="+$('#wClient').val(), dataType: 'json' }); promise.fail( function() { window.alert("Fail!"); }); promise.done( function() { window.alert("Success!"); }); |
这样做是将
请注意,js是单线程的;你的第一个例子工作的原因是因为它实际上执行下一个'成功'的代码并存储结果。在这种情况下,没有什么可以存储;它只是弹出一个警报窗口。这意味着在警报触发后,ajax调用将离开客户端:使用Chrome上的开发人员工具或等效工具来查看此信息。
通过在那里放置一个函数,当ajax调用在线程中稍后返回时(或者更准确地说,在响应返回时启动的新线程中),将其指定为执行某些操作。