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.

Любая идея?

2 ответа

Решение

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

    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, но выкладываю их как объект, не разбирая его.

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

name=John&date=05 & 06 mars

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

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

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

Другие вопросы по тегам