Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/477.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从字符串中提取数据_Javascript_Jquery_Json - Fatal编程技术网

Javascript 从字符串中提取数据

Javascript 从字符串中提取数据,javascript,jquery,json,Javascript,Jquery,Json,我把它当作一根绳子。我已经使用jquery并从网页上解析了它 我尝试使用jQuery.parseJSON,得到了错误Uncaught SyntaxError:Unexpected token n 我需要“surl”和“imgurl”怎么才能得到这个 { ns:"images", k:"5061", mid:"172E23D582B8C2A90F3FE9DC2B04A3ECD1D4F70F", surl:"http://polyhouse2011.wordpress

我把它当作一根绳子。我已经使用jquery并从网页上解析了它

我尝试使用jQuery.parseJSON,得到了错误
Uncaught SyntaxError:Unexpected token n

我需要“surl”和“imgurl”怎么才能得到这个

{
    ns:"images",
    k:"5061",
    mid:"172E23D582B8C2A90F3FE9DC2B04A3ECD1D4F70F",
    surl:"http://polyhouse2011.wordpress.com/2011/05/16/safety-precautions-2/",
    imgurl:"http://polyhouse2011.files.wordpress.com/2011/05/safety_gear1.gif",
    ow:"480",
    docid:"608038082569896450",
    oh:"301",
    tft:"117",
    dls:"images,5487"
}
此字符串的来源:

<a href="#" q="{ns:"images",k:"5061",mid:"172E23D582B8C2A90F3FE9DC2B04A3ECD1D4F70F",surl:"http://polyhouse2011.wordpress.com/2011/05/16/safety-precautions-2/",imgurl:"http://polyhouse2011.files.wordpress.com/2011/05/safety_gear1.gif",ow:"480",docid:"608038082569896450",oh:"301",tft:"117",dls:"images,5487"}"></a>

这是一个有效的JSON字符串:

{
    "ns": "images",
    "k": "5061",
    "mid": "172E23D582B8C2A90F3FE9DC2B04A3ECD1D4F70F",
    "surl": "http://polyhouse2011.wordpress.com/2011/05/16/safety-precautions-2/",
    "imgurl": "http://polyhouse2011.files.wordpress.com/2011/05/safety_gear1.gif",
    "ow": "480",
    "docid": "608038082569896450",
    "oh": "301",
    "tft": "117",
    "dls": "images,5487"
}

如果您的JSON字符串中出现错误,请通过联机检查其验证,我希望它会对您有所帮助。

如果您使用的是
object
format而不是
JSON
format,则如果您确实喜欢以下代码,则它是正确的:

var obj = {
    ns:"images",
    k:"5061",
    mid:"172E23D582B8C2A90F3FE9DC2B04A3ECD1D4F70F",
    surl:"http://polyhouse2011.wordpress.com/2011/05/16/safety-precautions-2/",
    imgurl:"http://polyhouse2011.files.wordpress.com/2011/05/safety_gear1.gif",
    ow:"480",
    docid:"608038082569896450",
    oh:"301",
    tft:"117",
    dls:"images,5487"
}

因此,如果您想要获得
surl
imgurl
:只需执行:
obj.surl
obj.imgurl

如果您没有编辑JSON信息的选项,可以这样做以使其成为有效的JSON对象。我会说,由于安全原因,包含eval可能是不好的,但从长远来看,这将使JSON成为一个有效的对象

var object = '{ \
    ns: "images", \
    k: "5061", \
    mid: "172E23D582B8C2A90F3FE9DC2B04A3ECD1D4F70F", \
    surl: "http://polyhouse2011.wordpress.com/2011/05/16/safety-precautions-2/", \
    imgurl: "http://polyhouse2011.files.wordpress.com/2011/05/safety_gear1.gif", \
    ow: "480", \
    docid: "60808082569896450", \
    oh: "301", \
    tft: "117", \
    dls: "images5487" \
}';

var json = JSON.stringify(eval("(" + object + ")"));
var o = $.parseJSON(json);


希望这有帮助。如果你有任何问题,请告诉我

为了方便起见,我的示例假设您的锚点有一个id。如果没有所有不必要的转义,您将得到以下结果:

var str = document.getElementById('a').getAttribute('q');
var json = JSON.stringify(eval("(" + str + ")"));
var obj = JSON.parse(json)
var surl = obj.srl;


但是您确实应该将属性数据更改为正确的解析JSON。

这不是有效的JSON,需要引用标识符,即“ns”:“images”。好的,既然我没有办法更改此字符串,我该如何进行排序?等等。jQuery在
.getJSON
上自动解析JSON数据。ajax
请求并返回一个实际对象,因此您应该能够执行
响应.surl而无需解析它。看起来你正在试图解析一个对象,这就是你出错的原因。@kannu你能分享一些代码,说明你如何检索“字符串”吗?@Andy这不是来自ajax请求,ci:数据被添加到锚定标记中,我必须从那里提取。这不是问题的答案。再读一遍。@ci_u我读了那个问题,在json字符串中得到了错误。所以我回答了关于有效json字符串的问题,现在如果解析该字符串,就可以轻松访问surl和imgurl值。转义纯粹是因为我喜欢按照json的格式来看待它,但我知道他将它放在字符串中,所以这只是我的偏好。另外,当我回答这个问题时,HTML部分不在问题的范围之内。为什么呢,先生。知道了HTML部分,你的答案就更优雅了:)谢谢,这很有效,我还投票给了@wrxsti。我不知道HTML对这一点很重要,我认为只有字符串才能做到。。