2011-04-04 141 views
0

我得到在文本区域调用AjaxJSON对象显示

{"answer":{"isPresent":true,"test":{"string":[""]},"Id":310}} 

我想测试的内容后JSON结果是这样的。当我在文本区域检索并显示“测试”的内容时,我只能得到这个

[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

你能粘贴你使用的代码吗? – Philip 2011-04-04 09:07:01

+0

@philip:我已经添加了代码 – karthick 2011-04-04 09:13:44

回答

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); 

不过,我建议你不要使用“字符串”作为您的变量ID。改用“str”之类的东西。

血淋淋的细节:http://json.org/js.html

1

你要使用JSON.stringify方法,由JSON2 library提供,并且原生大多数浏览器(IE除外= < 7)如果你想要的数据的JSON序列化版本在文本区域。

0

现在,test中的数据是的一个对象。您命名变量testString,但真正的testString值是对象{"string":[""]},"Id":310}

如果你想比在文本框内原始JSON数据,你将需要访问这两个领域内test和将它们连接起来成格式的其他东西,你想。如果原始json没问题,请参阅@tobyodavies优秀的答案。 :)