【问题标题】:json data not working on serverjson数据在服务器上不起作用
【发布时间】:2017-06-05 09:38:49
【问题描述】:

我使用 Jquery ajax 检索了我的 json 数据。我的数据是:

[{"id":"2","checkNo":"74152","routingNo":"896523","accountNo":"741236","confirmAccountNo":"85263","custEmail":"avn@gmail1.com","custName":"jonita gandhi","custStreetAddress":"address2","custPhone":"78456","custCity":"city2","custState":"state2","custZipCode":"4123","amount":"71","memo1":"memo3","memo2":"","cmp":"support","bankName":"Federal Bank","bankAddress":"A-19, Golden avenue","bankCity":"Florida","bankState":"FE","isDeleted":"0","createdDtm":"2017-05-30 14:47:48","updatedDtm":null}]

在 Jquery 成功时,我将数据保存在变量中

var jsonData = JSON.parse(JSON.stringify(data));

当我尝试访问 checkNo。使用 jsonData[0].checkNo 它会产生 undefined 但是当我使用

检查它时
console.log(jsonData)

输出与top相同的数据

注意:此问题仅在服务器上产生,但在我的本地主机上运行良好。

编辑:

这是我的 ajax 调用:

jQuery.ajax({
url: postUrl,
data:queryString,
type: "POST",
success:function(data){
    switch(action) {
      case "edit": 
      jsonData = JSON.parse(data); console.log(jsonData);
      //var jsssss = JSON.parse(JSON.stringify(data)); console.log(jsssss); 
      $("#custEmail").val(jsonData[0].custEmail);
      $("#custName").val(jsonData[0].custName);
      $("#custCheckNo").val(jsonData[0].checkNo);
      $("#edit_model").modal();
        break;
     //some more code
}
});

【问题讨论】:

  • 尝试删除JSON.stringify
  • @Arg0n 删除它后在我的服务器上工作正常,但现在,在本地主机上它说: Uncaught SyntaxError: Unexpected token o in JSON at position 1
  • 我会说在你的服务器上你有一个JSON string,但在本地主机上它是一个object。尝试:var jsonData = typeof data === 'string' ? JSON.parse(data) : data;

标签: javascript json javascript-objects


【解决方案1】:

您不需要解析和/或字符串化您的数据。 JQuery 会为你做这件事。

$.ajax({
    type: "POST",
    contentType: "application/json",
    url: postUrl,
    data: queryString,
    dataType: "json",
    success:function(data){
        switch(action) {
          case "edit":
          jsonData = data; 
          $("#custEmail").val(jsonData[0].custEmail);
    break;
    //some more code
  }
});

【讨论】:

  • 它对我有用。谢谢。我希望我可以投票给你。在此之前,我使用 & 发送行数据,在我的 php 页面上,我使用 $_POST 方法来获取它。
  • 确保您发送的数据是这样的 json 格式:queryString = '{"action":"' + action+ '", "checkId":"' + id+ '"}';键和值必须是双码。
【解决方案2】:

可能您正在对数据进行两次字符串化

你不必var jsonData = JSON.parse(JSON.stringify(data));

别这样

var jsonData = JSON.parse(data);

片段

var data  ='[{"id":"2","checkNo":"74152","routingNo":"896523","accountNo":"741236","confirmAccountNo":"85263","custEmail":"avn@gmail1.com","custName":"jonita gandhi","custStreetAddress":"address2","custPhone":"78456","custCity":"city2","custState":"state2","custZipCode":"4123","amount":"71","memo1":"memo3","memo2":"","cmp":"Geeks Help","bankName":"Federal Bank","bankAddress":"A-19, Golden avenue","bankCity":"Florida","bankState":"FE","isDeleted":"0","createdDtm":"2017-05-30 14:47:48","updatedDtm":null}]';

var jsonData = JSON.parse(data); // remove your stringify

console.log(jsonData[0].checkNo)

另外,如果你在 ajax 调用中做这样的事情

$.ajax({
      type: "POST",
      contentType: "application/json",
      url: '/Hello',
      data: { name: 'norm' },
      dataType: "json"
      success: function(data){
        //Here your data is already a parsed object
        var jsonData = data;
        console.log(jsonData[0].checkNo)
      }
   });

【讨论】:

  • 删除它后在我的服务器上工作正常,但现在,在本地主机上它说: Uncaught SyntaxError: Unexpected token o in JSON at position 1 当我从服务器接收到 Json 数据时,它不包含 ' as你的。
  • 分享您的 ajax 调用。我认为它有content typedataType 设置
  • 添加 contentType 和 Datatype,如我的 ajax 调用中所示,不要解析任何您的数据已经是对象的内容
  • 它对我有用。谢谢。我希望我能投票给你。
【解决方案3】:

从 php 中删除 JSON.stringify.its 已经是一个 json 字符串 .try with

var jsonData = JSON.parse(data);

var data ='[{"id":"2","checkNo":"74152","routingNo":"896523","accountNo":"741236","confirmAccountNo":"85263","custEmail":"avn@gmail1.com","custName":"jonita gandhi","custStreetAddress":"address2","custPhone":"78456","custCity":"city2","custState":"state2","custZipCode":"4123","amount":"71","memo1":"memo3","memo2":"","cmp":"Geeks Help","bankName":"Federal Bank","bankAddress":"A-19, Golden avenue","bankCity":"Florida","bankState":"FE","isDeleted":"0","createdDtm":"2017-05-30 14:47:48","updatedDtm":null}]';
var jsonData = JSON.parse(data);

console.log(jsonData[0].checkNo)

【讨论】:

    【解决方案4】:

    改一下就行了

     var jsonData = JSON.parse(data);
    

    var data ='[{"id":"2","checkNo":"74152","routingNo":"896523","accountNo":"741236","confirmAccountNo":"85263","custEmail":"avn@gmail1.com","custName":"jonita gandhi","custStreetAddress":"address2","custPhone":"78456","custCity":"city2","custState":"state2","custZipCode":"4123","amount":"71","memo1":"memo3","memo2":"","cmp":"Geeks Help","bankName":"Federal Bank","bankAddress":"A-19, Golden avenue","bankCity":"Florida","bankState":"FE","isDeleted":"0","createdDtm":"2017-05-30 14:47:48","updatedDtm":null}]';
    var jsonData = JSON.parse(data);
    
    console.log(jsonData[0].checkNo)
    console.log(jsonData[0].routingNo)

    【讨论】:

      猜你喜欢
      • 2012-12-08
      • 2023-03-30
      • 2012-09-03
      • 2018-08-18
      • 1970-01-01
      • 2015-11-24
      • 1970-01-01
      • 2017-05-17
      • 2015-02-17
      相关资源
      最近更新 更多