我解析 JSON 文件并将数据添加到HTML
下拉列表,代码如下,
$.getJSON(
"http://mobile.icta.lk/services/railwayservice/getAllLines.php?lang=en&jsoncallback=?",
function(data) {
var $s = $('.txtline').empty();
// the actual contents of this loop will be
// specific to the data
for (var k in data) {
$('<option></option>')
.val(data[k].value)
.text(data[k].text)
.appendTo($s);
}
}
)
我得到一个错误,
Resource interpreted as Script but transferred with MIME type application/json.
getAllLines.php:2Uncaught SyntaxError: Unexpected token :
答案 0 :(得分:4)
问题是这个远程服务器返回JSON,而不是JSONP。它返回:
{"lines":[{"line":"COLOMBO - BADULLA"},{"line":"COLOMBO - MATALE"},{"line":"COLOMBO - PUTTLAM"},{"line":"COLOMBO - THANDIKULAM"},{"line":"COLOMBO - TALAIMANNAR"},{"line":"COLOMBO - BATTICALOA"},{"line":"COLOMBO - TRINCOMALEE"},{"line":"COLOMBO - MATARA"},{"line":"COLOMBO - AVISSAWELLA"},{"line":"COLOMBO - MIHINTALE"}]}
而不是:
someCallbackName({"lines":[{"line":"COLOMBO - BADULLA"},{"line":"COLOMBO - MATALE"},{"line":"COLOMBO - PUTTLAM"},{"line":"COLOMBO - THANDIKULAM"},{"line":"COLOMBO - TALAIMANNAR"},{"line":"COLOMBO - BATTICALOA"},{"line":"COLOMBO - TRINCOMALEE"},{"line":"COLOMBO - MATARA"},{"line":"COLOMBO - AVISSAWELLA"},{"line":"COLOMBO - MIHINTALE"}]})
除非此远程资源支持JSONP,否则您将无法使用AJAX使用远程域。
答案 1 :(得分:1)
这是一个小脚本:
<?php
// file url: http://localhost/remote-json-proxy.php
$url = 'http://mobile.icta.lk/services/railwayservice/getAllLines.php';
$qsa = '?';
foreach($_GET as $n => $v) {
if($n != 'callback') {
$qsa .= '&' . $n . '=' . rawurlencode($v);
}
}
$json = file_get_contents($url . $qsa);
echo sprintf('%s(%s);', $_GET['callback'], $json);
?>
用法:
<!-- file url: http://localhost/test.htm -->
<script type='text/javascript'>
$.getJSON('remote-json-proxy.php?lang=en&this=that&callback=?', function(data) {
console.log(data);
})
</script>