我有一个简单的搜索表单,使用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);
}
谢谢。
答案 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()
)