从php中的jquery结果解析json回复

时间:2016-12-20 09:59:16

标签: javascript php jquery json ajax

我有一个简单的搜索表单,使用jquery

查询外部服务器的结果
$("#formsearch").on("submit", function (event) {
        // everything looks good!
        event.preventDefault();
        submitFormSearch();
});
function submitFormSearch(){
    // Initiate Variables With Form Content
    var searchinput = $("#searchinput").val();
    $.ajax({
        type: "GET",
        url: "https://external-server/api/",
        headers: {"Authorization": "xxxxxxxxxxxxxx"},
        data: "action=Search&query="+searchinput,
                success:function(json){
                    console.log(json);
                    $.ajax({
                        type: "POST",
                        url:'search_func.php',
                        data: "func=parse&json="+json,
                        success:function(data) {
                            console.log(data);
                            $('#risultato_ricerca').html(data);                         
                            }
                    });
                }
    });
}

第一个GET ajax工作正常,我得到正确的数据,但试图将这个json数据发送到我的PHP脚本后,我无法获取数据。 这是search_func.php

中的代码
if(isset($_POST['func']) && !empty($_POST['func'])){
    switch($_POST['func']){
    case 'parse':
            parse($_POST['json']);
            break;
        default:
            break;
    }
} 
function parse($json) {
    $obj = json_decode($json,true);
    var_dump($obj);
}

...显示NULL

我哪里错了?

编辑: 的解决

改变:
data: "func=parse&json="+json, 至: data: { func: 'parse', json: JSON.stringify(json) },

json代码正确传递给search_func.php 将php文件中的函数解析更改为:

function parse($json) {
    $data = json_decode(stripslashes($json),true); 
    print_r($data);
}

谢谢。

2 个答案:

答案 0 :(得分:0)

是否正确填充了javascript json变量(即您的控制台显示了什么?)可能必须在发布之前将json变量编码为字符串。

即:代替data: "func=parse&json="+json,使用data: "func=parse&json="+JSON.stringify(json),

答案 1 :(得分:0)

请参阅:http://api.jquery.com/jquery.ajax/

正确的语法是:data: { func: 'parse', json: my_json_here }

如果这不起作用,可能是您必须将JSON编码为字符串(请参阅JSON.stringify()