我试图通过使用我编写的php程序从Guardian api获取一些JSON数据,例如来自http://content.guardianapis.com/search?q=Tim%20Farron%20mp&page-size=3&format=json
这个例子。当我从javascript发送它的数据中自行运行时,数据通常如上所示,但是当javascript运行时,它没有从php获得任何东西 - 代码卡住了。
PHP(工作)代码:
<?php
//gets url from passed over value
$url = urldecode($_GET['url']);
//gets contents of url
$results = file_get_contents($url);
header('content-type: text/json');
echo $results;
这是我的javascript无法正常工作的部分 - 没有回复,因为它被卡在第一行。
$.getJSON('getSTORY.php?url='+ url2, function(response) {
console.log(response);
});
在控制台中,这是一条返回的错误消息(我认为!)
XHR finished loading: "http://yrs2013.bugs3.com/mpapp/getSTORY.php?url=http%3A%2F%2Fcontent.guardianapis.com%2Fsearch%3Fq%3DTim%20Farron%20mp%26page-size%3D3%26format%3Djson". jquery.js:6
//^above was the link using the php. when pressed this shows the required JSON code
send jquery.js:6
x.extend.ajax jquery.js:6
x.(anonymous function) jquery.js:6
x.extend.getJSON jquery.js:6
(anonymous function) script.js:57
c jquery.js:4
p.fireWith jquery.js:4
k jquery.js:6
r
我想知道为什么程序会卡住以及如何解决它,以及如何将变量从php传递回javascript!我对这一切都很新,所以提前感谢! :)
答案 0 :(得分:0)
您的代码应该可以正常工作,但请将其作为参考:
$(function() {
$('#test').bind('click', function(ev) {
var url2="http://content.guardianapis.com/search?q=Tim%20Farron%20mp&page-size=3&format=json";
$.getJSON('test.php?url='+ url2, function(response) {
console.log(response);
$("#results").text(""+JSON.stringify(response));
if(response.response.status == "ok"){
$("#results").text("");
$.each(response.response.results, function(index, element) {
$("#results").append($('<div>', {
text: "Section: " + element.sectionName
}));
$("#results").append($('<div>', {
text: "Title: " + element.webTitle
}));
$("#results").append($('<hr>'));
});
$("#results").show();
}
});
});
});
<form>
<input type="button" name="test" id="test" value="test">
</form>
<div id="results">
</div>
答案 1 :(得分:0)
所以你的问题最有可能是你的json响应由于上面代码中没有的$url
输出而无效。所以请为将来做好准备:不要删除过多的代码,以便在问题中发布它,如果它只是用于调试目的的代码。
删除echo $results;
你应该改变的是json的内容类型application/json
:
header('content-type: application/json');
然后,为了检查JSON解析器是否可以处理响应,您可以使用jsonlint来验证json。