1

我在从响应字符串中获取变量时遇到问题。我的回复是这样的:

responseText = {'page':'2','endOfPage':'yes','content':'abc'}

alert(responseText.page);

返回未定义,有人可以建议怎么做吗?

4

3 回答 3

6

您的问题是您的 responseText 实际上是一个字符串(responseText = "{'page':'2','endOfPage':'yes','content':'abc'}";)。您首先必须解析它以创建一个对象,但这会失败,因为您使用的是单引号,这不是有效的 JSON - 您需要使用双引号来解决问题:

var json= "{ \"page\": 2, \"endOfPage\": \"yes\", \"content\": \"abc\" }";
var obj = JSON.parse(json);
alert(obj.page);

如果您无法更改 JSON 生成器实现以返回带双引号的响应,请尝试将每个单引号替换为双引号,如下所示:

var invalidJson = "{'page':'2','endOfPage':'yes','content':'abc'}";
validJson= invalidJson.replace(/\'/g, "\"");
var obj = JSON.parse(validJson);
alert(obj.page);
于 2012-11-06T07:18:53.760 回答
-1
  • 如果你使用 jQuery,你可以使用这个:

responseText = '{"page":"2","endOfPage":"yes","content":"abc"}';
responseText = jQuery.parseJSON(responseText);
警报(responseText.endOfPage);

  • 在 Javascript 中:
responseText =  '{"page":"2","endOfPage":"yes","content":"abc"}';
alert(JSON.parse(responseText).page);

一些现代浏览器支持将 JSON 解析为原生 js 对象

于 2012-11-06T07:28:22.600 回答
-3

您需要使用 eval 函数将 json 转换为 object:

responseText = {'page':'2','endOfPage':'yes','content':'abc'}​​​​
var responseObject = eval(responseText);

alert(responseObject.page);
于 2012-11-06T07:18:51.987 回答