jquery的string转换object

这是jquery代码
$(function(){
$(".class").live("click" ,function(){
var data1={"data12":$(this).attr("id")};
//window.alert($(this).attr("id"));
//window.alert(data1);
$.post("1.php",data1,function(data){
window.alert(typeof data);
var testJson = eval("("+data+")");
window.alert(typeof testJson);
$("tr").remove(".hello");
window.alert(testJson);
window.alert(data.x);
$("#123").append(data); }
)
})
});
php代码
<?php
header("content-type:text/html;charset=utf-8");
$id=$_POST['data12'];
$xmldoc=new DOMDocument();
$xmldoc->load("renwu.xml");
$ren=$xmldoc->getElementsByTagName("放单人");
$renshu=$ren->length;//获取多少个放单人
for($a=0;$a<$ren->length;$a++){
$dije=$ren->item($a);
$bianhao=$dije->getElementsByTagName("编号")->item(0)->nodeValue;//编号
if($id==$bianhao){
$di=$xmldoc->createElement("接单人");
$d=$di->length;
if($d<5){
$di->nodeValue="125";
$dije->appendChild($di);//挂到对应的节点上
$xmldoc->save("renwu.xml");
$ab="接到任务";
}else{$a="没有接到任务";}

break;
}

}
$xmldoc=new DOMDocument();
$xmldoc->load("renwu.xml");
$ren=$xmldoc->getElementsByTagName("放单人");

$renshu=$ren->length;//获取多少个放单人
for($a=0;$a<$renshu;$a++){
$dije=$ren->item($a);
$bianhao=$dije->getElementsByTagName("编号")->item(0)->nodeValue;//编号
$mingzhi=$dije->getElementsByTagName("名字")->item(0)->nodeValue;//名字
$fabushjian=$dije->getElementsByTagName("发布时间")->item(0)->nodeValue;//发布时间
$shoujie=$dije->getElementsByTagName("手机单")->item(0)->nodeValue;//手机单
$jinge=$dije->getElementsByTagName("金额")->item(0)->nodeValue;//金额
$zhuanhao=$dije->getElementsByTagName("砖号")->item(0)->nodeValue;//砖号
$renwu=$dije->getElementsByTagName("任务要求")->item(0)->nodeValue;//任务要求
$shuanlianjie=$dije->getElementsByTagName("双链接")->item(0)->nodeValue;//双链接
$yuancheng=$dije->getElementsByTagName("远程")->item(0)->nodeValue;//远程
$ip=$dije->getElementsByTagName("IP")->item(0)->nodeValue;//ip地址
$dianshu=$dije->getElementsByTagName("点数")->item(0)->nodeValue;//点数
$fabu=$dije->getElementsByTagName("发布")->item(0)->nodeValue;//发布几单
$beijie=$dije->getElementsByTagName("接单人")->length;//接单人的个数
$beiji=$dije->getElementsByTagName("接单人")->item($a)->nodeValue;//接单人的是谁
if($beijie<5){
$b=$b." <tr class='hello'><td>$bianhao </td><td>$mingzhi</td><td>$fabushjian</td><td>$shoujie</td><td><input title='123' class='class' id={$bianhao} type='button' value='抢任务'/></td><td>$jinge</td><td>$zhuanhao</td><td>$renwu</td><td>$shuanlianjie</td><td>$yuancheng</td><td>$ip</td><td>$dianshu</td><td>$fabu</td><td>$beijie</td></tr>";
}
}
$aq="{\"x\":$b,\"nei\":$ab}";
echo $aq;

var testJson = eval("("+data+")");这个错了,底要怎么写

第1个回答  2015-03-01
错不在eval
在於你php端数据传回

另外请勿用IE进行开发, 它的调试工具和chrome, firefox差得很远
像这种eval出错的问题
检查浏览器提供的Error的stack属性
大体能看到形如
ReferenceError: e is not defined
at Object.eval (eval at <anonymous> (url:93:78), <anonymous>:1:1)
什麽意思?
发生了eval的错误, e没有定义, eval函数位置在url这个文件的93行78列, 其eval的值发生错误的在匿名函数的第1行第1列
当然还有其它形式..

针对你的这个问题
最简单的改法就是
$aq="{\"x\":\"".preg_replace('/"/','\\"',$b).",\"nei\":\"".preg_replace('/"/','\\"',$ab)."\"}";
php我有点久没写了
不过大意就是
通过正则把$b,$ab里的"统统变成\",然後用""包裹起来拼接到返回中

当然完整版的还有涉及, Unicode字符转意, 空白字符转意, 所以你还不如找个php的JSON库就好

顺带一提Javascript解析JSON串, 用eval是最不可靠的, 一般用JSON.parse('{"a":0}')本回答被提问者和网友采纳
相似回答