Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery ajax调用间歇性地获取空数据,有时获取真实数据_Jquery_Asp.net Mvc_Ajax - Fatal编程技术网

Jquery ajax调用间歇性地获取空数据,有时获取真实数据

Jquery ajax调用间歇性地获取空数据,有时获取真实数据,jquery,asp.net-mvc,ajax,Jquery,Asp.net Mvc,Ajax,我使用的是MVC.net框架,在jQueryAjax调用中遇到了一个奇怪的问题 我有一个页面,允许用户输入金额,然后单击“下一步”。当他们单击“下一步”时,我向服务器发出ajax调用,并通过JSON返回一些更新的信息。这些都是相当标准的东西 然而,奇怪之处在于返回的JSON数据。“data”变量(在回调中)有时为null,有时包含来自服务器的实际数据。奇怪的是,总是调用控制器的操作,但返回的数据并不总是进入ajax回调函数。这与超时时间间隔无关,因为设置该值对问题没有影响 在调试操作代码时,我通

我使用的是MVC.net框架,在jQueryAjax调用中遇到了一个奇怪的问题

我有一个页面,允许用户输入金额,然后单击“下一步”。当他们单击“下一步”时,我向服务器发出ajax调用,并通过JSON返回一些更新的信息。这些都是相当标准的东西

然而,奇怪之处在于返回的JSON数据。“data”变量(在回调中)有时为null,有时包含来自服务器的实际数据。奇怪的是,总是调用控制器的操作,但返回的数据并不总是进入ajax回调函数。这与超时时间间隔无关,因为设置该值对问题没有影响

在调试操作代码时,我通常可以触发该条件,但在不调试时,该条件不会发生得那么频繁

有没有人遇到过类似的问题,或者对解决办法或其他需要调查的事情有什么建议

var postbackUrl = "/Balance/Add?amt=" + $("#Amount").val();
$.ajax({
    type: "POST",
    contentType: "application/json; charset=utf-8",
    url: postbackUrl,
    data: "{}",
    dataType: "json",
    success: function (data,status,request) {
        $("#x_amount").val(data.x_newBalance)

    }
});
更新: 为了获得更多的洞察力,我将回调切换为使用3变量版本。在所有情况下,状态均为“成功”。有趣的是这个请求

请求的状态始终为200,readyState为4。不同之处在于responseBody。正如您所期望的,当“data”为null时,responseBody为null,当“data”有效时,responseBody具有内容


我想我需要弄清楚为什么要剥离responseBody。

您是否尝试过jquery ajax“timeout”参数

 $.ajax({ 
  type: "POST", 
  contentType: "application/json; charset=utf-8", 
  url: postbackUrl, 
  data: "{}", 
  timeout: 20000,
  dataType: "json", 
  success: function (data) { 
     $("#x_amount").val(data.x_newBalance) 

  } 
}); 

您是否尝试过jqueryajax“timeout”参数

 $.ajax({ 
  type: "POST", 
  contentType: "application/json; charset=utf-8", 
  url: postbackUrl, 
  data: "{}", 
  timeout: 20000,
  dataType: "json", 
  success: function (data) { 
     $("#x_amount").val(data.x_newBalance) 

  } 
}); 

您使用JSON作为请求内容类型,但仍在查询字符串中提供参数。为什么不简单地使用:

$.ajax({
    type: 'POST',
    url: '/Balance/Add',
    data: { amt: $('#Amount').val() },
    dataType: 'json',
    success: function (result) {
        $('#x_amount').val(result.x_newBalance);
    }
});

还请注意,我使用了
result
作为变量,以避免与
数据

混淆。您使用JSON作为请求内容类型,并且仍然在查询字符串中提供参数。为什么不简单地使用:

$.ajax({
    type: 'POST',
    url: '/Balance/Add',
    data: { amt: $('#Amount').val() },
    dataType: 'json',
    success: function (result) {
        $('#x_amount').val(result.x_newBalance);
    }
});

还请注意,我使用了
result
作为变量,以避免与
数据发生任何混淆

我看到在远程服务器不可用时调用了传递给$.ajax的成功回调,在这种情况下,数据值为null。这似乎不对,可能与你所看到的有关


更新我的问题是jQuery 1.4.2中的一个bug,也许您遇到了相同的问题

我看到在远程服务器不可用时调用传递给$.ajax的成功回调,在这种情况下,数据值为null。这似乎不对,可能与你所看到的有关


更新我的问题是jQuery 1.4.2中的一个bug,也许您遇到了相同的问题

超时值无效。如果Ajax调用驻留在一个JS中,只需按如下方式包含它:超时值无效。所以这一定是另外一回事。如果您的Ajax调用驻留在JS中,请尝试按如下方式包含它:我认为这不是问题,因为http状态为200,但数据为空。我不认为这是问题,因为http状态为200,但数据为空。我尝试了您的建议,但仍然得到相同的行为。我用更多的细节更新了问题。我尝试了你的建议,但还是得到了同样的行为。我用更多的细节更新了这个问题。