Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从jquery ajax post获取php中的json字符串_Php_Ajax_Jquery - Fatal编程技术网

从jquery ajax post获取php中的json字符串

从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

我正在尝试编写一个页面,它通过AJAX从新闻站点获取RSS提要,然后将其发送到PHP,在那里我可以使用它。新闻提要作为对象数组返回。我试着按原样发布它,也试着以json字符串的形式发布它。post方法似乎很成功,但PHP给出了一个未定义的索引通知。这是我第一次使用AJAX和PHP,我似乎在从PHP端获取数据时遇到了问题

错误:

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调用