2014-03-03 78 views
0

我試圖開發Firefox擴展附加組件Firefox的PHP請求

問題:

var Request = require("sdk/request").Request; 
var latestTweetRequest = Request({ 
    url: "file.php", 
    onComplete: function (response) { 
    var List = response.json; 
    } 
}); 

我想用這個請求函數解析JSON到一個數組(列表在這裏)從PHP文件。

我的php文件echo json形式正確,但我無法將數據轉換爲javascript數組,以便能夠在我的插件中使用它。 如果不是使用這個功能做一個更好的主意,但請告訴我:)

回答

1

試試這個:MDN - JSON Object

JSON.parse與JSON.stringify

var Request = require("sdk/request").Request; 
var latestTweetRequest = Request({ 
    url: "file.php", 
    onComplete: function (response) { 
     var List = JSON.parse(response.json); 
    } 
}); 

使用是非常重要的雙引號。

如果您遇到JSON.parse問題。將你的數組複製到暫存器,然後在其上運行JSON.stringify,然後確保你的php文件符合結果。

如果Addon-SDK沒有JSON,那麼你必須要求該模塊,如果有的話。如果沒有要求('chrome')並獲取組件HERE

+0

hello :)謝謝你的回答:) 我可以在本地測試嗎?網址:「file.php」使用xamp服務器 – user3375448

+0

酷男做了它的工作?只是爲了我自己的知識,所以在將來如果有人回答我可以告訴他們相同的? sdk是否有JSON對象? – Noitidart

+0

我認爲他是的,但我不能夠測試它:/我認爲url:需要http:// url不只是一個PHP文件:/ – user3375448

0

Noitidarts代碼中存在一個錯誤。

爲什麼JSON.parse request.json?如果要分析這樣做對request.text

但是沒有必要json.parse作爲請求模塊試圖解析,如果成功retuns request.json

在這裏看到:

var Request = require("sdk/request").Request; 
var latestTweetRequest = Request({ 
    url: "https://api.twitter.com/1/statuses/user_timeline.json?screen_name=mozhacks&count=1", 
    onComplete: function (response) { 
    var tweet = response.json[0]; 
    console.log("User: " + tweet.user.screen_name); 
    console.log("Tweet: " + tweet.text); 
    } 
}); 

// Be a good consumer and check for rate limiting before doing more. 
Request({ 
    url: "http://api.twitter.com/1/account/rate_limit_status.json", 
    onComplete: function (response) { 
    if (response.json.remaining_hits) { 
     latestTweetRequest.get(); 
    } else { 
     console.log("You have been rate limited!"); 
    } 
    } 
}).get(); 

所以可能的問題是你的PHP不輸出json.parse可以讀取的json字符串。請務必使用"。通過在一個虛擬對象上運行json.stringify來確定你的php文件應該返回什麼。即:

var obj = {myarr:[1,8,9,7,89,0,'ji'],strr:'khhkjh',anothrtObj:{1:45,56:8}}; 
alert(JSON.stringify(obj)) //{"myarr":[1,8,9,7,89,0,"ji"],"strr":"khhkjh","anothrtObj":{"1":45,"56":8}} 

所以現在在你的PHP請確保您的輸出文本mateches這種格式

{ 「myArr,該」:1,8,9,7,89,0, 「吉」] 「STRR」: 「khhkjh」, 「anothrtObj」:{ 「1」:45, 「56」:8}}

如果你的php輸出類似下面JSON.parse將在其上失敗,因此請求。JSON將爲空

{myArr,該:[1,8,9,7,89,0, 「唧」],STRR: 「khhkjh」,anothrtObj:{ 「1」:45, 「56」: 8}}

{ 'myArr,該':[1,8,9,7,89,0, 「唧」], 'STRR': 「khhkjh」, 'anothrtObj' :{ 「1」:45, 「56」:8}}

{'myarr':[1,8,9,7,89,0'ji'],'strr':'khhkjh','anothrtObj':{'1':45,'56':8 }}

+0

謝謝你的答案:)但我已經嘗試過使用此功能,但它不工作:/我真的不知道爲什麼:(我的PHP文件回顯json文件的正確形式。我需要一個數組在我的插件 – user3375448

+0

哪些函數?粘貼在這裏*精確*你的php輸出什麼 – Blargh

+0

{ 「U1」:{ 「ID」:1, 「OBJ」: 「ABC1」, 「類型」: 「T1」 }, 「U2」:{ 「ID」:2, 「OBJ」: 「abc2」, 「type」:「t2」 }, 「u3」:{ 「ID」:3, 「目標文件」: 「ABC3」, 「類型」: 「T1」 } } – user3375448