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

时间:2013-07-21 14:04:33

标签: php ajax jquery

我想写一个页面,它通过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 side

<?php
    $data = json_decode(stripslashes($_POST['data']));
    echo $data;         
?>

1 个答案:

答案 0 :(得分:2)

将您的代码包裹在if中以避免该警告:

if (isset($_POST['data'])) {
    $data = json_decode(stripslashes($_POST['data']));
    echo $data;  
}

问题是当你从浏览器访问index.php时,没有POST请求,所以当然$_POST为空并且未设置$_POST['data']

希望你明白这一点。

编辑:

嗯,我看不出任何严重的错误。实际上现在我建议您使用php.net/manual/en/book.curl.php直接从RSS获取数据,而不是嵌套2个ajax调用。