2016-11-17 3 views
0

вот мой JS код:PHP не может получить JSON с помощью AJAX вызова

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

'данные: {myData: myData},' – adeneo

ответ

0

Вам нужны ключи, чтобы получить данные с поста/получить переменные

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

PHP:

$_POST['firstname'] 

или

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

, если вы действительно хотите массив

$_POST['data'] 
+0

Пробовал. Все еще не работает:/ – Petrus

+0

Что значит «не работает»? – madalinivascu

1

Try ниже

dataType : "json": говорит JQuery, что вы хотите, чтобы разобрать возвращаемый JSON

json_encode(): функция 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, вам не нужно его строчить. вы можете передать свой массив, как есть

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); 
    } 
}); 
Смежные вопросы