【问题标题】:Wrong data received in javaScript using AJAX使用 AJAX 在 JavaScript 中接收到错误的数据
【发布时间】:2018-07-09 19:53:00
【问题描述】:

我在我的 file.js 中进行了多次调用 AJAX,调用具有以下形式:

文件.js

$.post('functions.php',{consulta: 'tbl_Cours', action: {"ask_query_field":variable1}).val()}, function(res1){ 
  if (res1){
    //do something
  } 

  //Second call
  $.post('functions.php',{consulta: 'tbl_Cours', action: {"ask_query_field":variable2}}, function(res2){ 
    if(res2){
      //do something
    } 

    //third call
    $.post('functions.php',{consulta: 'tbl_Cours', action: {"ask_query_field":variable3}}, function(res3){ 
      if(res3){
        console.log(res3);
      } 
    });
  });
}); 

所以,第一次和第二次调用返回都很好,我调用了同一个文件functions.php和同一个函数。但是在第三次调用中,我得到了一个数据,但它与从服务器服务器 php 发送的数据不同。

我在 php 中看到了日志并显示返回:

从 php 记录

[30-Jan-2018 11:06:50 America/Chicago] Array
(
  [tema] => Tema 1 .- Introducción y definiciones
  [pk_tema] => 3
  [cantidad] => 1
)

[30-Jan-2018 11:06:50 America/Chicago] Array
(
  [tema] => Tema 2 .- Posiciones y valoraciones
  [pk_tema] => 4
  [cantidad] => 3
)

[30-Jan-2018 11:06:50 America/Chicago] Array
(
  [tema] => Tema 3 .- Practicas y actividades
  [pk_tema] => 5
  [cantidad] => 3
)

接下来,在 Javascript 中,我看到我收到的内容和数据不同

>>  {0: {…}, 1: {…}, 2: {…}}
0:{tema: "Tema 1 .- Introducción y definiciones", pk_tema: "3", cantidad: "1"}
1:{tema: "Tema 2 .- Posiciones y valoraciones", pk_tema: "4", cantidad: "4"}
2:{tema: "Tema 3 .- Practicas y actividades", pk_tema: "5", cantidad: "3"}

pk_tema:4 现在有 cantidad :4 之前在 functions.js 中有 3 个。 我试过了

  1. 把变量名改成result Ex: res3 改成data_received,结果是一样的。
  2. 把 $.ajaxSetup({async: false});因为我认为这是同步问题。但结果是一样的。
  3. 我通过控制台执行了第三次调用,结果很好。

所以,我不确定我使用 php7 和 jQuery v1.12.4 的问题是什么。在谷歌浏览器中

【问题讨论】:

  • 我觉得不错。 php日志中的对象与javascript中的对象相同。在 JS 中它看起来像是一个内部有 3 个对象的对象,但所有的数据都在那里。
  • 查看开发者工具/网络/找到您的第三个 ajax 调用/查看响应选项卡。在那里您将看到收到的原始数据。检查这些数据是否正确。
  • @Karl 感谢您查看我的问题,但如果您看到,php pk_tema:4cantidad:3 和 JavaScript 中的信息更改是pk_tema:4cantidad:4 .
  • @bigless 收到的数据没问题。所以问题过去了,我不确定这个变量发生了什么。因为我将来不会使用。但你是对的,问题过去了,并没有影响到我。
  • @alfonsovelasco3622 第一个请求中的“.val()”是什么?如果您可以为此使用 async.waterfall() 会很酷。

标签: javascript jquery asynchronous call


【解决方案1】:

感谢@bigless,因为我没有检查开发人员的所有工具,我在 JavaScript 中收到了正确的数据,但我不确定为什么它会随着时间而变化,我永远不会使用两次变量 res3 但它所拥有的信息发生了变化。非常感谢您的宝贵时间。

0:{tema: "Tema 1 .- Introducción y definiciones", pk_tema: "3", cantidad: "1"}
1:{tema: "Tema 2 .- Posiciones y valoraciones", pk_tema: "4", cantidad: "3"}
2:{tema: "Tema 3 .- Practicas y actividades", pk_tema: "5", cantidad: "3"}

【讨论】:

  • 对象是可变的。您可能会在记录它和在开发人员工具中使用它之间对其进行变异。控制台将在您在开发工具中展开对象时显示对象的值,而不是在记录时显示。
  • @FelixKling 所以如果我理解你的建议,基本上console.log(JSON.parse(JSON.stringify(res3))) 应该打印收到的值
  • 是的,你是对的@FelixKling,当我使用控制台时,值是不同的。我不知道附加什么,但现在我知道了,谢谢你的回答,现在我该如何解决这个问题?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多