簡體   English   中英

使用jQuery解析的php編碼變量調試不可見的JSON錯誤

[英]Debugging invisible JSON errors using php encoded variables, parsed with jQuery

我正在使用php json_encode將一堆值發送到客戶端,其中jquery

{"data":{"application":{"basics":{"email":"jepp@mily.com","name_first":"Step","name_last":"Bob","phone":"9210938102938","occupation":"unemployed","website":"wwwcom"},"application":{"title":"Default title","guid":"9as8ua9sd8ua9sdu","language":"sv"},"job":{"title":"joburl","url":"joburl"},"letter":{"letter":"abadbabkbakbakbakbakbakbabk"},"work-experiences":[{"title":"Default WORK Experience Title","url":"wwwsscom","date_from":"1970-01-01","date_to":"1999-12-31"},{"title":"Default WORK Experience Title","url":"wwwsscom","date_from":"1970-01-01","date_to":"1999-12-31"},{"title":"Default WORK Experience Title","url":"wwwsscom","date_from":"1970-01-01","date_to":"1999-12-31"}],"educations":{"title":"Default Education","url":"ixi","date_from":"1970-01-01","date_to":"1999-12-31"},"skills":{"title":"Defailt SKILL","url":"wwwsdcom","date_from":"ixi","date_to":"ixi"},"work-samples":{"title":"A sample of my work","url":"wwwsdcom","date_from":"ixi","date_to":"1999-12-31"}}},"error":[],"warning":[]}

如果我嘗試在腳本中使用$.parseJSON對此進行解析,則$.parseJSON得到任何對象。 但是,如果我將其直接復制/粘貼到控制台中(並在開頭和結尾添加“),則可以正常工作。 沒有錯誤代碼,也看不到換行符。 JSON lint-tools不返回錯誤...

我已經設置了正確的內容類型,並嘗試了jquery提供的不同的json解析器。

我錯過了什么?


該代碼是從jQuery教程中剪切/粘貼的。 我嘗試了一些不同的示例,但都失敗了。

var jqxhr = $.getJSON( "application_controller.php", function() {
    console.log( "success" );
})
.done(function() {
    console.log( "second success" );
})
.fail(function() {
    console.log( "error" );
})
.always(function(data) {
    console.log( "complete" );
    application = data;  
});

// Perform other work here ...

// Set another completion function for the request above
jqxhr.complete(function() {
    console.log( "second complete" );
});
});

是的,我在控制台中對其進行了解碼。 這是一個可在腳本中執行的代碼段(也無法使用):

$.ajax({
  dataType: "json",
  contentType: "application/json",
  url: 'application_controller.php',
  data: '{id:id}',
  success: function( data ) {
        application = data.responseText;
        application = $.parseJSON(application);/* < string */     
    },
    fail: console.log("fail"),
    complete: function(data) {
        console.log(data.responseText);
        application = data.responseText;
    }
});

回答我自己的問題:

為了解決此錯誤,我必須將所有PHP文件從“ utf8”編碼更改為“無BOM的utf8”。 然后它起作用了。

當包含不帶utf8編碼的文件時(當然,層次結構較低),它會污染所有其他文件並破壞輸出。

使用JSON.parse(jsonString)函數。

var jsonString = '{"data":{"application":{"basics":{"email":"jepp@mily.com","name_first":"Step","name_last":"Bob","phone":"9210938102938","occupation":"unemployed","website":"wwwcom"},"application":{"title":"Default title","guid":"9as8ua9sd8ua9sdu","language":"sv"},"job":{"title":"joburl","url":"joburl"},"letter":{"letter":"abadbabkbakbakbakbakbakbabk"},"work-experiences":[{"title":"Default WORK Experience Title","url":"wwwsscom","date_from":"1970-01-01","date_to":"1999-12-31"},{"title":"Default WORK Experience Title","url":"wwwsscom","date_from":"1970-01-01","date_to":"1999-12-31"},{"title":"Default WORK Experience Title","url":"wwwsscom","date_from":"1970-01-01","date_to":"1999-12-31"}],"educations":{"title":"Default Education","url":"ixi","date_from":"1970-01-01","date_to":"1999-12-31"},"skills":{"title":"Defailt SKILL","url":"wwwsdcom","date_from":"ixi","date_to":"ixi"},"work-samples":{"title":"A sample of my work","url":"wwwsdcom","date_from":"ixi","date_to":"1999-12-31"}}},"error":[],"warning":[]}';

var myData = JSON.parse(jsonString);

小提琴

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM