簡體   English   中英

僅在客戶端服務器上未定義AJAX調用中的對象

[英]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.

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