2016-11-17 94 views
0

这里是我的JS代码:PHP无法从Ajax调用检索JSON

var person = []; 
    person[0] = "John"; 
    person[1] = "Doe"; 
    person[2] = 46; 
    var myData = JSON.stringify(person); 
    $.ajax({ 
     type: "POST", 
     url: "test.php", 
     dataType : "text", 
     contentType: "application/json; charset=utf-8", 
     data: myData, 
     success: function(answer) { 
      alert(answer); 
     }, 
     complete: function() { 
     }, 
     error: function(jqXHR, errorText, errorThrown) { 
      alert(jqXHR+" - "+errorText+" - "+errorThrown); 
     } 
    }); 

而这里的PHP:

if(isset($_POST['myData'])) 
{ 
echo "ok"; 
} 
else 
{ 
echo "not_ok"; 
} 
?> 

它总是返回 “NOT_OK”。为什么我的PHP代码无法检索JSON?我做错了什么?任何人都可以向我解释吗?

+0

你应该使用'json_encode();'! –

+1

'data:{myData:myData},' – adeneo

回答

0

你需要一些键从后让您的数据/ GET变量

data:{firstname:"John",lastname:"Doe",age:45}, 

PHP:

$_POST['firstname'] 

data:{data:["John","Doe",45]},

,如果你真的想要一个数组

$_POST['data'] 
+0

试过了。仍然没有工作:/ – Petrus

+0

你是什么意思“不起作用”? – madalinivascu

1

试试下面

dataType : "json":告诉你想让它解析返回的JSON

json_encode()的jQuery:PHP函数以JSON格式编码阵列。

的JavaScript

var person = []; 
person[0] = "John"; 
person[1] = "Doe"; 
person[2] = 46; 

$.ajax({ 
    type: "POST", 
    url: "test.php", 
    dataType : "json", // Set datatype json 
    data: {myData : person}, // Request Parameters 
    success: function(answer) { 
     console.log(answer); // JSON Response 
    }, 
    complete: function() { 
    }, 
    error: function(jqXHR, errorText, errorThrown) { 
     alert(jqXHR+" - "+errorText+" - "+errorThrown); 
    } 
}); 

PHP

<?php 
    if(isset($_POST['myData'])){ 
     $status = "ok"; 
    } 
    else 
    { 
     $status = "Not Ok"; 
    } 
    echo json_encode(array("status" => $status)); 
    exit; 
?> 

输出

Object {status: "ok"} 
+0

是的,那工作:)非常感谢! – Petrus

+0

最受欢迎:) –

+0

这是我的一次。我错了......它返回“不好”。不知道为什么,我复制并粘贴了你的代码而不是我的代码。 – Petrus

0

你是你的数组转换json格式的字符串,没有任何名称。但是你可以在ajax post中发布数组,你不需要对它进行串联化。 你可以通过你的阵列,因为它是

data: {myData: person}, 



var person = []; 
    person[0] = "John"; 
    person[1] = "Doe"; 
    person[2] = 46; 

$.ajax({ 
    type: "POST", 
    url: "test.php", 
    dataType : "text", 
    contentType: "application/json; charset=utf-8", 
    data: {myData: person}, 
    success: function(answer) { 
     alert(answer); 
    }, 
    complete: function() { 
    }, 
    error: function(jqXHR, errorText, errorThrown) { 
     alert(jqXHR+" - "+errorText+" - "+errorThrown); 
    } 
});