<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script>
function fn(){
$.ajax({
type:'GET',
url: "http://www.enquiry.indianrail.gov.in/ntes/NTES",
data: "action=getTrainForDate&trainNo=16649&trainStartDate=11/04/2014&t=1397216860215&18q1xp3lm5=1ptur1oxbz1i5vwea0u61397214250740",
dataType: "json",
success:function(data){
alert(data);
}
});
}
</script>
</head>
<body>
<a href="#" onclick="fn();"> hi </a>
</body>
</html>
答案 0 :(得分:4)
您请求的网址返回(function(){location.reload();})()
,这不是JSON,JSONP或任何形式的有用数据。
答案 1 :(得分:-1)
只是为了更新,您需要使用jsonp
代替json
,否则您将收到CORS错误。更新的代码是
$.ajax({
type:'GET',
url: "http://www.enquiry.indianrail.gov.in/ntes/NTES",
data: {"action" : "getTrainForDate", "trainNo" : "16649", "trainStartDate" : "11/04/2014", "t" : "1397216860215", "18q1xp3lm5" : "1ptur1oxbz1i5vwea0u61397214250740"},
dataType: "jsonp",
success:function(data){
alert(data);
}
});
请注意,以字符串形式发送数据的方式并没有错,我只是喜欢对象方式。 现在,当您拨打电话时,您最终会收到此消息(而不是数据)
Resource interpreted as Script but transferred with MIME type text/plain: "http://www.enquiry.indianrail.gov.in/ntes/NTES?callback=jQuery2119973546624…1397216860215&18q1xp3lm5=1ptur1oxbz1i5vwea0u61397214250740&_=1397220999300".
这就是问题所在。如果您点击形成的URL,它将为您提供JavaScript函数作为响应,而不是数据。这就是你得到的回应
(function(){location.reload();})()
我认为,对于每个请求,服务器都需要唯一令牌(由"18q1xp3lm5" : "1ptur1oxbz1i5vwea0u61397214250740"
设置标识)。如果不满足条件,它会向浏览器发送重新加载请求。
由于调用是通过AJAX进行的,因此无法重新加载页面,但由于重复使用令牌,因此没有结果。