我试图解析一个JSON响应,但$ .getJSON中的任何指令都无法执行。
的json.html
<!DOCTYPE html>
<html>
<head>
<script src="js/jquery.js"></script>
</head>
<body>
<script>
$.getJSON("json.php?jsoncallback=?", function(data) {
var a = data[0].cve_id + 'something';
});
alert(a); //chrome says "a is not defined"
</script>
</body>
</html>
的json.php:
<?php
header("Content-Type: application/json", true);
echo file_get_contents("http://www.cvedetails.com/json-feed.php?numrows=10&vendor_id=0&product_id=0&version_id=0&hasexp=1&opec=1&opov=1&opcsrf=1&opfileinc=1&opgpriv=1&opsqli=1&opxss=1&opdirt=1&opmemc=1&ophttprs=1&opbyp=1&opginf=1&opdos=1&orderby=1&cvssscoremin=0");
?>
任何想法,为什么?
LATER:
感谢您的回复。我明白了原因。
我已将$.getJSON
更改为$.get
,并指定了data type
至json
。
你的AJAX是异步的。变量有范围。 –
当'alert(a)'发生时,异步AJAX调用还没有完成。你需要在'function(data)'回调中提醒(a)'。如果您需要使用该值来修改DOM,则必须在回调中执行此操作 –
_chrome表示“a未定义”_ - 这是因为'a'在回调函数中定义为_local_变量,您将其传递给' $ .getJSON()',因此只能在该函数内部访问(即使除了异步问题)。 – nnnnnn