Addon firefox php请求

时间:2014-03-03 16:59:14

标签: javascript php json firefox-addon firefox-addon-sdk

我正在尝试开发Firefox扩展程序

问题:

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

我想使用此请求函数从php文件将json解析为数组(此处为List)。

php我的php文件echo json形式正确,但我无法将数据转换为javascript数组,以便能够在我的插件中使用它。 如果有比使用此功能更好的想法,请告诉我:)

2 个答案:

答案 0 :(得分: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文件与strignified结果匹配。

如果Addon-SDK没有JSON,那么你必须要求模块(如果有的话)。如果没有要求('chrome')并抓住组件HERE

答案 1 :(得分:0)

Noitidarts代码中存在一个错误。

为什么JSON.parse request.json?如果你想在request.text

上解析它

然而,当请求模块尝试解析时,无需json.parse,如果成功返回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中确保输出的文本匹配这种格式

  

{ “myArr,该”:[1,8,9,7,89,0, “唧”], “STRR”: “khhkjh”, “anothrtObj”:{ “1”:45, “56”:8 }}

如果你的php输出如下JSON.parse会失败,所以request.json将为null

  

{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, 'ジ'], 'STRR': 'khhkjh', 'anothrtObj':{ '1':45,'56' :8 }}