JQuery:AJAX错误:将数据发送到服务器

这应该很简单,但我无法在任何地方找到有关如何操作的信息:

$.ajax({ type: 'POST', url: 'addToBasket.php', data: 'id='+id, // .... error: function(xhr, textStatus, error){ // how to get the id sent to the server? }, success: function(data, textStatus, xhr){} }); 

error handling函数如何访问请求中发送到服务器的数据?

试试这个可能有助于将’id’作为全局变量发送到服务器并访问它

 var id='bla bla' $.ajax({ type: 'POST', url: 'addToBasket.php', data: 'id='+id, // .... error: function(xhr, textStatus, error){ // how to get the id sent to the server? alert(id); }, success: function(data, textStatus, xhr){} }); 

虽然这是一个老问题,但我有与Jodes完全相同的挑战

我发现在error函数中使用它保存了ajax对象,你可以从中提取数据(this.data),尽管它的url编码

 $.ajax({ type: 'POST', url: 'addToBasket.php', data: 'id='+id, // .... error: function(xhr, textStatus, error){ // how to get the id sent to the server? console.log(this.data); }, success: function(data, textStatus, xhr){} }); 

希望这可以帮助

编辑:我使用https://gist.github.com/brucekirkpatrick/7026682来反序列化数据字符串

您可以使用this.data访问error handling程序内的ajax选项的data属性。
如果你没有专门设置context属性,那么$.ajax的回调内部将始终是ajax调用本身,然后this.data将是你传入的数据的序列化字符串。

 $.ajax({ type : 'POST', url : 'addToBasket.php', data : 'id='+id, error : function(xhr, textStatus, error){ var data = this.data; // "id=something" }, success : function(data, textStatus, xhr){} }); 

小提琴

如果你需要将该字符串解析为一个对象,这里是如何 – > 如何在JavaScript中获取查询字符串值?

您还可以使用全局error handling程序来获取数据对象,因为它是第一个参数的ajax调用。
它将触发所有ajax错误,但可以通过URL或任何其他选项传递等进行过滤。

 $(document).ajaxError(function(event, jqXHR, ajaxSettings, thrownError) { if (ajaxSettings.url == 'addToBasket.php') { alert(ajaxSettings.data) } }); 

小提琴