2012-05-29 100 views
0

我想弄出一个JSON对象,但最终我得到了所有的HTML。使用html的JSON对象

alert("5 " + request.responseText); 
    var JSONObject = eval(+ "(" + request.responseText + ")"); 
    alert("text1: " + JSONObject.name); 

因此,第一行打印出纯HTML代码的警报。它应该这样做,还是responseText应该只是JSON对象? 第二行不起作用,所以第三行不打印。

我见过的例子,他们只是使用evalresponseText像我一样,但在我的情况下,它不工作......任何建议?

+4

你的服务器决定你回到什么样的“垃圾”。 – Pointy

+0

如果'request.responseText'是HTML,它不能被'eval'ed成一个对象.. – paislee

+1

“Eval”是Evil,Dude:http://squdgy.wordpress.com/2011/10/04/is-javascript -eval-真邪/。使用类似jQuery“getJSON()”的东西你会更好。更好的是,只需在服务器上创建JSON对象。恕我直言... – paulsm4

回答

0

听起来像服务器端在一个响应中喷射HTML和JSON。我会首先检查浏览器中的调用或像fiddler这样的代理,以确保它只是返回JSON。

+0

看起来不仅它的JSON回来了。它是否存在一个简单的方法来将responseText剥离为仅JSON? – stianlp

+0

如果你在一个HTML元素中有JSON,你可以使用类似JQuery的东西来得到JSON的位,它是在你离开responseXml之后得到的,然后解析那个JSON字符串。 –

+0

我现在这样做: \t var json = $ .getJSON(URL); \t alert(json); \t alert(json.name); (这是三行代码,但它看起来像一个) 第一次警告打印:[object Object] 第二次警告打印:undefined 这是什么意思? – stianlp

1

尝试方法

jQuery.ParseJSON(request.responceText); 

但首先要确保你的服务器以JSON格式发送数据?