更改您的页面,使其只生成 JSON:
{"groups":["1210103","1210103","1210103","1210405"],
"prices":["279,00","399,00","628,00","129,00"],
"titles":["","","",""]
}
请注意,在 JSON 中,您必须使用"
,而不是'
,来引用字符串。
让它返回Content-Type
一个application/json
. 如果由于某种原因您无法在响应上设置正确的标头,您可以通过添加到您的调用Content-Type
来强制 jQuery 将响应视为 JSON ,但最好使用正确的.dataType: 'json'
ajax
content-Type
然后在您的ajax
调用success
回调中,result
将已经是一个具有三个属性(groups
、prices
、titles
)的反序列化对象,这将是您可以使用的 JavaScript 数组。
实例| 来源
您在下面的评论中说过,该页面是一个带有嵌入script
标签的完整 HTML 页面,除了标签的内容之外,您无法控制它script
,因为您使用的是 CMS。
我强烈建议转向更灵活的 CMS。
直到/除非你能做到这一点,你可以简单地接收页面作为文本,然后提取 JSON。script
将您的标签更改为以下内容:
<script>
var JSONObject = /*XXX_JSONSTART_XXX*/{"groups":["1210103","1210103","1210103","1210405"],
"prices":["279,00","399,00","628,00","129,00"],
"titles":["","","",""]
}/*XXX_JSONEND_XXX*/;
</script>
注意标记。然后您可以提取标记之间的 JSON,并$.parseJSON
在其上使用。例子:
(function($) {
$.ajax({
url: "http://jsbin.com/ecolok/1",
dataType: "text",
success: function(result) {
var startMarker = "/*XXX_JSONSTART_XXX*/";
var endMarker = "/*XXX_JSONEND_XXX*/";
var start, end;
start = result.indexOf(startMarker);
if (start === -1) {
display("Start marker missing");
}
else {
start += startMarker.length;
end = result.indexOf(endMarker, start);
if (end === -1) {
display("End marker missing");
}
else {
result = $.parseJSON(result.substring(start, end));
display("result.groups.length = " + result.groups.length);
display("result.prices.length = " + result.prices.length);
display("result.titles.length = " + result.titles.length);
}
}
}
});
function display(msg) {
$("<p>").html(String(msg)).appendTo(document.body);
}
})(jQuery);
实时复制| 来源