我是第一次写一些其他的API,所以我需要一些帮助。我在stackoverflow上找到了解决问题的解决方案,我设法解决了这些问题。但现在我来到另一个,找不到解决办法。
首先,js文件代码。
$.getJSON('test.php', function(data) {
console.log(data);
articles = data;
return articles;
});
这是js文件,我从中发送请求到php文件然后获取数据。问题是,当我记录它时,我从php回来的数据在浏览器控制台中看起来很好,所有数据都存在。但是当我尝试在页面上使用该数据时(使用我的return语句),它不起作用。如果我用
替换返回文章行return [{"name":'Name goes here',"description":'Description goes here'}];
它在页面上工作正常。这让我很烦,因为在浏览器控制台中我可以看到从php文件返回的所有对象,但是它们在页面上不起作用。我希望你们中的任何人都可以帮助我。我正在粘贴我的php文件。
$json = array(
array(
"name" => 'Name goes here',
"description" => 'Test description.',
"link" => 'articles/articleName',
"img" => '../images/article1.jpg'
),
array(
"name" => 'Name goes here 2',
"description" => 'Not ready yet',
"link" => '#',
"img" => ''
),
array(
"name" => 'Name goes here 3',
"description" => 'Not ready yet',
"link" => '#',
"img" => ''
)
);
$jsonstring = json_encode($json, JSON_PRETTY_PRINT);
echo $jsonstring;
答案 0 :(得分:1)
问题是您在$ .getJson调用的异步部分返回。
你有什么:
function myFunction()
{
$.getJSON('test.php', function(data) {
console.log(data);
articles = data;
return articles;
});
}
var articles = myFunction();
myFunction运行,并且不返回任何内容,然后$ .getJSON得到它的响应并且与它没有任何关系。返回并不意味着很多,因为代码具有'继续前进'
你需要做的是处理getJSON的异步部分内的数据(或传入一个函数来做那里的东西)
你需要什么:
function myFunction()
{
$.getJSON('test.php', function(data) {
console.log(data);
articles = data;
//do something with articles
//maybe set a div equal to them
$("#myArticles").innerHTML = articles;
//or call a function with articles as a param
doSomethingCool(articles);
});
}
function doSomethingCool(arts)
{
alert("You have articles: " + arts);
}
你甚至可以传递你想做的事情作为一个参数
function myFunction(callback)
{
$.getJSON('test.php', function(data) {
console.log(data);
articles = data;
callback(articles);
});
}
myfunction(alert); //will alert with the articles
//define the callback function 'on the fly'
myfunction(function(articlesFromJson) {
if(articlesFromJson.length > 2)
alert("wow 2+ arcticles");
});
以上内容会抓住文章两次,并且每次都会做一些不同的事情。