我試圖解析一個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