Javascript RESTAPI,将JSON对象从PHP返回到JS文件
我第一次在写RESTAPI,所以我需要一些帮助。我在stackoverflow上找到了一些解决问题的方法,我设法解决了它们。但现在我又遇到了另一个问题,找不到解决办法 首先,js文件代码Javascript RESTAPI,将JSON对象从PHP返回到JS文件,javascript,php,json,api,rest,Javascript,Php,Json,Api,Rest,我第一次在写RESTAPI,所以我需要一些帮助。我在stackoverflow上找到了一些解决问题的方法,我设法解决了它们。但现在我又遇到了另一个问题,找不到解决办法 首先,js文件代码 $.getJSON('test.php', function(data) { console.log(data); articles = data; return articles; }); 这是js文件,我从中向php文件发送请求,然后返回数据。问题是,当我记
$.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;
问题是您返回的是$.getJson调用的异步部分 你所拥有的:
function myFunction()
{
$.getJSON('test.php', function(data) {
console.log(data);
articles = data;
return articles;
});
}
var articles = myFunction();
myFunction运行,不返回任何内容,然后$.getJSON稍后会得到响应,与此无关。。Return在那里没有什么意义,因为代码已经“继续”
您需要做的是处理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");
});
上面的文章会抓取两次,每次都会做一些不同的事情。谢谢您的快速回复。我试过你的选择,和以前一样。在这两种情况下,我都从php文件中获取JSON,但似乎存在问题,因为我无法在页面上使用这些数据。(在控制台日志中,对象是可见的!)问题是,我的朋友让我将他的页面与数据库连接起来,因为这是我第一次用api这样做,我不知道这种页面是如何工作的。它会自动从这个函数中读取return,并在第一页生成文章。但随着我的归来,只有一片空白。如果我插入上面提到的JSON行,它就可以工作了。嗯,这绝对是一种方法。您是如何尝试“获取页面上的数据”的?您正在使用数据设置div的内容吗?
{{article.name}}
{{article.description | articledesc:120}
很抱歉代码太疯狂了。。这就是他获取数据的方式,后面必须有一些js来处理这些调用。看起来您使用的是angular,您需要在$.getJSONYep的异步部分设置$scope.articles。这是angular。将检查一些教程并修复它。感谢您的帮助!