JQery AJAX GET метод с анализом объекта в JSON

Я благодарю вас, чтобы высказать свое мнение об этом загадочном поведении:

Этот код работает:

JS код:

$.ajax({
url: "ajouterEntreeParExcel.ajax.php", // url de la page à charger
data: {"name":"John","date":"05 & 06 mars"},
cache: false, // pas de mise en cache
async: false,
contentType : "application/json",
dataType: "json",
success:function(jsonRetour){

},
error:function(XMLHttpRequest, textStatus, errorThrows){ // erreur durant la requete

}
});

И PHP-код:

        $name = $_GET["nom"];
$date = $_GET["date"];

И этот не работает

    var dataAjax = {};
dataAjax["name"] = "John";
dataAjax["date"] = "05 & 06 mars";
var entree = JSON.stringify(dataAjax);

$.ajax({
url: "ajouterEntreeParExcel.ajax.php", // url de la page à charger
data: entree,
cache: false, // pas de mise en cache
async: false,
contentType : "application/json",
dataType: "json",
success:function(jsonRetour){

},
error:function(XMLHttpRequest, textStatus, errorThrows){ // erreur durant la requete

}
});

С тем же кодом PHP.
В Debug с firebug я проверяю переменную «entree», и она хорошо отформатирована, но я ничего не получаю в сторону PHP.

Примечание: я предпочитаю использовать тип GET, а не тип POST.

Любая идея ?

0

Решение

Это потому, что в первом запросе вы отправляете данные как x-www-form-urlencoded, чего ожидает ваш PHP-код:

name=John&date=05 & 06 mars

Тогда как во втором вы отправляете данные в формате JSON в запросе, например:

'{"name":"John","date":"05 & 06 mars"}'

Также обратите внимание, что вы должны удалить async: false как это считается ужасной практикой его использования. Если вы проверите свою консоль, вы увидите предупреждение браузера об ее использовании.

1

Другие решения

Таким образом, чтобы иметь версию, работающую с объектом и с заданным откликом, этот код работает:

    var dataAjax = {};
dataAjax["date"] = obj["Date"];
dataAjax["comite"] = obj["Comité Int.Rég."];$.ajax({
url: "ajouterEntreeParExcel.ajax.php", // url de la page à charger
data: dataAjax,
cache: false, // pas de mise en cache
//async: false,
//contentType : "application/json",
dataType: "json",
success:function(jsonRetour){
printValueTraitee = printValueTraitee + '<span class="green">OK</span>';
},
error:function(XMLHttpRequest, textStatus, errorThrows){ // erreur durant la requete
printValueTraitee = printValueTraitee + '<span class="red">KO</span>';
}
});

Так что я больше не отправляю свои данные в формате JSON, но выкладываю их как объект, не разбирая его.

0

По вопросам рекламы [email protected]