2017-10-06 74 views
0

我有一個奇怪的錯誤,解析json數據。字符串jQuery321040763556724467964_1507276501913??是在JSON響應於標準的AJAX請求,在該點的jquery與jquery在json中的jquery解析錯誤

Uncaught SyntaxError: Unexpected token : 
at DOMEval (jquery.js:82) 
at Function.globalEval (jquery.js:346) 
at text script (jquery.js:9606) 
at ajaxConvert (jquery.js:8754) 
at done (jquery.js:9222) 
at XMLHttpRequest.<anonymous> (jquery.js:9514) 

扼流圈和運行AJAX錯誤回調。但是json是有效的,並且如果最後的兩個問號被移除,則可以愉快地完成。

它也完成了(用?)如果不是設置dataType: 'json' 我提供任何數據類型和手動解析響應並傳遞給回調

this.send_ajax = function(payload, cb_success, cb_failed) { 
    let r = { 
     url: '/ajax', 
     type: 'POST', 
     data: JSON.stringify(payload), 
     //dataType: 'json', // see nb5137 
     success: function(response) { 
      cb_success(JSON.parse(response)); 
     }, 
     error: cb_failed 
    } 
    $.ajax(r); 
} 

這到底是怎麼回事?

回覆備註這不是跨域

+0

附加的字符串是因爲您似乎接收JSONP,而不是JSON。更改爲'dataType:'jsonp'並刪除'JSON.parse'調用,因爲jQuery已經爲您做了這些。 –

+0

也許我誤解了你,但奇怪的字符串有效地來自服務器。這不是jsonp。 – havlock

+0

你在這裏提出跨域請求嗎?如果你展示了完整的jQuery AJAX請求,它將會有所幫助。很難診斷你看不到的代碼問題。 –

回答

0

如果您被請求到不同的域,那麼您需要傳遞dataType:jsonp,否則傳遞dataType:json以獲得相同的域相同的原始請求。

+0

請注意,JSONP仍然可以用於同域請求,而不是可以自動修復CORS問題的靈丹妙藥。您需要將服務器配置爲使用該數據格式 - 大多數不是。 –

+0

謝謝,但它不是跨域 – havlock