2013-03-27 43 views
2

我正在處理在本地機器上正常工作的腳本,但是當我將它上傳到我的Web服務器時,$ .getJSON請求無法正常工作。

function loadData(fileName) { 
    return $.getJSON(fileName + ".json"); 
} 

var data; 

var myFile = "Data"; 

loadData(myFile).done(function (data1) { 
    if (data1 && data1.info) { 
     data = data1; 
     $.each(data1.info[0], function (key, value) { 
      alert(value); 
     }); 
    } 
}); 

我已經砍掉了很多我的內部代碼,它基本上只是把結果放到html元素中。我請求的網址是在遠程服務器上,但它工作時,我從我的硬盤驅動器運行這個HTML頁面。當我將它上傳到我的web服務器時,它沒有彈出,就像$ .getJSON甚至沒有運行。

我上傳到Apache作爲一個文件夾

Folder 
| 
|-->Index.html 
| 
|-->Data.json 
+1

檢查您的控制檯以查看是否有任何錯誤 – 2013-03-27 09:24:02

+0

錯誤:無法解析綁定。 消息:ReferenceError:info未定義; 綁定值:foreach:info http://ajax.aspnetcdn.com/ajax/knockout/knockout-2.2.1.js 第56行 – Okky 2013-03-27 09:32:19

+0

這是我得到的錯誤。但是如果我從硬盤上運行它。其工作正常 – Okky 2013-03-27 09:32:54

回答

2

不要依賴$.getJSON()方法,使用$.ajax()而是:你將有請求頭更多的控制。

與下列選項試試吧,和函數調用特有的應用程序中的參數集成:

$.ajax({ 
    type: "POST", 
    url: "some-url.json", 
    contentType: "application/json; charset=utf-8", 
    dataType: "json" 
}); 

$.ajax()方法的完整文檔都可以找到here

1

我有同樣的問題,但它可以在遠程服務器上工作,而不是在本地開發設備上(將項目從遠程服務器導入到我的新開發設備後)。

我終於發現我的PHP腳本根據未設置的$ _Session鍵拋出通知。遠程專用的服務器被設置爲不會引發我的本地服務器的通知。 結果是,在我的本地設備上,響應不能被解析爲JSON。在我在$_SESSION上輸入isset()命令後,JSON請求是真的 JSON和jQuery正確解析它。

只是證明你的服務器的迴應。您可以使用Web Developer - > Firefox上的Web控制檯完成此操作。只需右鍵點擊發送AJAX請求後出現的URL,並標記該字段以記錄您的請求及其響應。您可以在再次調用AJAX調用後檢查URL,並在檢查器窗口的底部找到它。您可以直接看到響應的內容以及格式是否正確。

相關問題