2014-03-03 51 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