在进行ajax调用后,我得到了这样的json结果
{"answer":{"isPresent":true,"test":{"string":[""]},"Id":310}}
我想在文本区域中测试内容。当我在文本区域中检索并显示“test”的内容时,我只得到这个
[Object object]
如何序列化这个值?
代码:
$.ajax(
{
async: true,
beforeSend: function(){
},
url: 'beginDisplay.do',
type: 'POST',
data: param,
dataType: 'json',
success: function(data, textStatus, XMLHttpRequest){
var isPresent= data.answer.isPresent;
if(isPresent){
var testString = data.answer.test;
$("#textArea").val(testString);
},
error : function(XMLHttpRequest, textStatus, errorThrown){
//alert(XMLHttpRequest.responseText+" http code"+XMLHttpRequest.statusCode);
//alert('XMLHttpRequest:'+XMLHttpRequest+'===>> textStatus:'+textStatus+'==>>errorThrown:'+errorThrown);
},
complete : function(){
//alert('after complete....');
//unblockUI();
}
}
);
答案 0 :(得分:1)
你想要使用JSON2 library提供的JSON.stringify
方法,以及大多数浏览器本身使用的方法(除了IE< = 7),如果你想要一个JSON序列化版本的数据文字区。
答案 1 :(得分:1)
这是我在javascript控制台中测试的方式:
var j = {"answer":{"isPresent":true,"test":{"string":["text you want"]},"Id":310}};
console.log(j.answer.test.string)
>> ["text you want"]
在上面的结果中,j.answer.test.string仍然是一个对象,因此您需要指定所需的节点值。
因此,在您的代码中,您可以这样做:
var testString = data.answer.test.string[0];
$("#textArea").val(testString);
但是,我建议你不要使用“string”作为你的变量id。使用类似“str”的东西。
答案 2 :(得分:0)
目前,test
中的数据是一个对象。您将变量命名为testString
,但实际上testString
的值是对象{"string":[""]},"Id":310}
如果您想在文本框中包含原始json数据以外的其他内容,则需要访问test
中的两个字段并将它们连接成您想要的格式。如果原始json没问题,请参阅@tobyodavies出色的答案。 :)