[英]object from AJAX call is undefined on client's server only
我有一個運行AJAX調用的Web應用程序,該應用程序在本地和測試服務器上都可以運行,但是在客戶端上卻沒有。
客戶端安裝了該應用程序,然后它的體系結構發生了一些變化,現在他們說將應用程序重新上傳到他們的服務器后它無法正常工作。 不幸的是,沒有辦法在服務器上進行手動測試,我所擁有的只是他們提供的這個簡單的錯誤日志:
App.jsx:63 Uncaught TypeError: Cannot read property 'name' of undefined
at Object.<anonymous> (App.jsx:63)
at i (jquery-3.2.1.min.js:2)
at Object.fireWith [as resolveWith] (jquery-3.2.1.min.js:2)
at A (jquery-3.2.1.min.js:4)
at XMLHttpRequest.<anonymous> (jquery-3.2.1.min.js:4)
此錯誤日志告訴我問題是以下代碼段。 它無法讀取json.settings的名稱變量,因為json.settings是未定義的。 如果未定義,則意味着至少存在json,因此AJAX調用有效,意味着“ settings.json”文件存在並在正確的路徑中找到...
因此,我可以在本地復制錯誤的唯一方法是,如果settings.json在對象中甚至沒有設置元素。
查看提供給客戶端的文件,情況並非如此...
我有什么要注意的嗎?
$.get("settings.json")
.done(function(json) {
name = json.settings.name;
}
如果要獲取JSON,並且要確保jQuery自動解析響應,則應使用$.getJSON()
$.getJSON("settings.json", function(json){
console.log(json)
});
$.get()
將在兩種情況下自動將響應轉換為json。 第一個是如果您通過給它期望的數據類型為“ json”來明確地告訴它。 第二種是如果您不告訴它,服務器將返回Content-Type為application/json
的響應,在這種情況下,jQuery將嘗試為您解析它而不通知您。 $.getJSON()
是您告訴它響應應為json並為您自動解析的簡寫形式。
參考。 https://api.jquery.com/jQuery.getJSON/
另一個選擇是保留它JSON.parse(json)
,並在響應中使用JSON.parse(json)
,但是為什么還要鍵入更多內容呢?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.