从jquery ajax post获取php中的json字符串
我正在尝试编写一个页面,它通过AJAX从新闻站点获取RSS提要,然后将其发送到PHP,在那里我可以使用它。新闻提要作为对象数组返回。我试着按原样发布它,也试着以json字符串的形式发布它。post方法似乎很成功,但PHP给出了一个未定义的索引通知。这是我第一次使用AJAX和PHP,我似乎在从PHP端获取数据时遇到了问题 错误:从jquery ajax post获取php中的json字符串,php,ajax,jquery,Php,Ajax,Jquery,我正在尝试编写一个页面,它通过AJAX从新闻站点获取RSS提要,然后将其发送到PHP,在那里我可以使用它。新闻提要作为对象数组返回。我试着按原样发布它,也试着以json字符串的形式发布它。post方法似乎很成功,但PHP给出了一个未定义的索引通知。这是我第一次使用AJAX和PHP,我似乎在从PHP端获取数据时遇到了问题 错误: Notice: Undefined index: data in ...\index.php on line 33 当前代码如下所示: ajax端 url = 'htt
Notice: Undefined index: data in ...\index.php on line 33
当前代码如下所示:
ajax端
url = 'http://feeds.bbci.co.uk/news/rss.xml?edition=int';
$.ajax({
type: "GET",
url: document.location.protocol + '//ajax.googleapis.com/ajax/services/feed/load?v=1.0&num=1000&callback=?&q=' + encodeURIComponent(url),
dataType: 'json',
error: function(){
alert('LOAD ERROR, INVALID URL');
},
success: function(xml){
values = xml.responseData.feed.entries;
var senddata = JSON.stringify(values);
console.log(senddata);
$.ajax({
type: "POST",
url: "index.php",
data: {data : senddata},
success: function(){
alert("postdone!");
},
error: function(){
alert("posterror!")
}
});
}
});
php端
<?php
$data = json_decode(stripslashes($_POST['data']));
echo $data;
?>
将您的代码包装在
if
中以避免该警告:
if (isset($_POST['data'])) {
$data = json_decode(stripslashes($_POST['data']));
echo $data;
}
问题是当您从浏览器访问index.php时,没有POST请求,因此当然$\u POST
为空,并且$\u POST['data']
未设置
希望你明白我的意思
编辑:
嗯,我看不出有什么严重的问题。实际上,现在我建议您使用php.net/manual/en/book.curl.php直接从RSS获取数据,而不是嵌套2个ajax调用 没关系,我没有注意到嵌套的ajax。执行
console.log(senddata)代码>返回什么?两个建议:首先,将参数“data”重命名为其他名称。由于参数名与.ajax键名匹配,可能会有一些混淆。其次,转储$\u POST
(var\u dump($\u POST
);`)的内容以查看它包含的内容。你的数据在那里吗?也许在你没想到的地方?谢谢你的回答!不知道我是否明白了重点。if条件将忽略警告。我可以通过控制台日志看到ajax已经完成,并且我还收到ajax帖子已经完成的警报。简言之,我想我的问题是——如何将RSS中的新闻项(值或senddata)转换成PHP,这样我就可以使用它们(将某些属性放入数据库等)?这样两个ajax都可以成功发送。您可以执行var\u转储($\u POST);在PHP部分调试调用,然后.var_dump($_POST)返回数组(0){},所以我假设问题是我发送的是一个空数组,因此ajax POST方法有问题吗?log(senddata)位于ajax文章之前,它返回给我一个key:value对数组,这些对肯定存在。你知道POST方法有什么问题吗?嗯,我看不出有什么严重的问题。实际上,现在我建议您使用直接从RSS获取数据,而不是嵌套2个ajax调用