在jQuery AJAX文章中,是否有可能不发送数据有效载荷?

问题描述:

我有一个问题,有时下面的AJAX代码中的数据有效载荷不会发送到服务器。在jQuery AJAX文章中,是否有可能不发送数据有效载荷?

// loans_url, sample_id, sample defined above this block 
$.ajax({ 
    type:  "POST", 
    url:  loans_url, 
    data:  {'loan[sample_id]':sample_id}, 
    beforeSend: function()  { sample.remove(); }, 
    success: function(data) { $('#basket table tr:last').after(data); }, 
    error:  function()  { $('#results').prepend("Apologetic error message..."); } 
}); 

“good”post发送的数据如下所示:loan[sample_id]: 1234。一个“不好”的帖子点击了正确的URL,但根本没有发送任何数据。

我不能在发展中重现此但它发生在一个每天约一次生产。在Firebug中,我尝试在从中获取sample_id的页面中破坏标记,但这只是导致loan[sample_id]: undefined被发送,这不是我正面临的问题。

有什么办法将数据有效载荷可以在全部不发送?你能建议我如何进一步调试吗? (这是所有与jQuery 1.3.2。)如果有一个连接问题

+0

你是不是传递'dataType'选项'阿贾克斯()',是正确的? – 2009-11-02 13:51:56

+0

你知道这是什么浏览器吗? – 2009-11-02 13:52:59

+0

'dataType'涉及服务器发送回客户端的内容,而不是客户端发送给服务器的内容。我基于jQuery站点上的'.ajax()'示例编写了这段代码,所以我很确定'dataType'是不必要的(在这种情况下)。 – 2009-11-02 16:42:08

POST数据只会丢失 - 例如,你可以向外拉你的网线,就像你按下“提交”复制此 - 标题可能会使它,发布数据可能不会 - 标题始终首先发送。

所以,我觉得你在看基础设施。丢失的互联网连接,一些丢失的数据包或类似的东西。我认为这对开发人员来说不是问题 - 只要您只接受完全形成的帖子请求即可。

+0

这当然有可能。但是,网站上还有许多其他AJAX调用,这是唯一一个有问题的调用。只有这个特定的电话受到影响的可能性似乎很小......所以我怀疑还有其他一些问题。 – 2009-11-02 12:32:50

尝试为您的jQuery ajax调用定义一个error处理程序,并在某处记录错误数据(呃,可能会对错误记录器进行另一个Ajax调用?)如果是连接问题,远程登录任何东西都会更困难。根据您的应用程序,您可能需要在本地记录某些内容(可能为cookies),以便进行后期分析(一旦连接启动,假设它存在连接问题)。

+0

我会试试这个。使用错误事件记录任何异常。或者,只是将它用作中断点。 – Mike 2009-11-02 15:34:06

+0

您的意思是预先提交错误处理程序来捕捉Javascript将AJAX文章放在一起的任何问题吗?不知道我会如何实现这一点。 我在服务器上有一个错误处理程序(这是我知道这是什么时候发生的)。邮寄请求总是很好地形成并成功提交;它有时候缺少贷款[sample_id]:1234'有效载荷。 – 2009-11-02 16:48:02

+0

jQuery允许对错误的ajax调用和'beforeSend'回调的'error'回调修改XMLHttpRequest。查看 jQuery [AJAX] [1]文档。 [1]:http://docs.jquery.com/Ajax/jQuery.ajax – 2009-11-02 18:50:20