Несколько потерян с jquery + php + json - PullRequest
1 голос
/ 26 апреля 2009

Я начинаю использовать jquery $ .ajax (), но не могу вернуть то, что хочу ... Я отправляю это:

$(function(){
            $.ajax({
                url: "graph_data.php",
                type: "POST",
                data: "casi=56&nada=48&nuevo=98&perfecto=100&vales=50&apenas=70&yeah=60",
                dataType: "json",
                error: 
                function (xhr, desc, exceptionobj) {
                    document.writeln("El error de XMLHTTPRequest dice: " + xhr.responseText);
                },
                success:
                function (json) {
                    if (json.error) { alert(json.error); return; }
                    var output = "";
                    for (p in json) {
                        output += p + " : " + json[p] + "\n";
                    }
                    document.writeln("Results: \n\n" + output);
                }
            });
        });

и мой php:

<?php

$data = $_POST['data'];

function array2json($data){ 
    $json = $data;

    return json_encode($json);
}
?>

и когда я выполняю это, я получаю:

Результаты:

точно так же, как я имел обыкновение иметь в php оператор echo array2json, но он просто возвращал бред ... Я действительно не знаю, что я делаю не так, и я гуглил около 3 часов, просто получая в основном то же самое Также я не знаю, как передать параметры в «data:» в функции $ .ajax, например, для получения информации с веб-страницы. Может ли кто-нибудь помочь мне?


Редактировать

Я сделал то, что вы предложили, и теперь он печатает данные, большое спасибо =) Однако мне было интересно, как я могу отправить данные в часть "data:" в jQuery, так что она берет это, скажем, от пользовательского ввода Также я проверял документацию php и там написано, что мне разрешено писать что-то вроде:

json_encode($a,JSON_HEX_TAG|JSON_HEX_APOS|JSON_HEX_QUOT|JSON_HEX_AMP)

однако, если я это сделаю, то получаю сообщение об ошибке, в котором говорится, что json_encode принимает 1 параметр, а я даю 2 ... есть идеи, почему? Я использую PHP 5.2

1 Ответ

7 голосов
/ 26 апреля 2009

Во-первых: данные, которые вы передаете в скрипт PHP, будут в $_POST, а не в $_POST['data'].

Далее: вам нужно вызвать функцию array2json с некоторыми данными ... Это полный пример кода?

Кроме того, я не уверен, что array2json должен делать ... почему бы не позвонить json_encode напрямую?

Для вашего примера вы можете просто сделать ваш файл PHP похожим на это:

print json_encode($_POST);

Наконец, вы должны получить инструмент, подобный Firebug , чтобы легко отлаживать ваши AJAX-вызовы.

EDIT

Для отправки данных от пользователя все, что вам нужно сделать, это иметь форму в любом месте вашей страницы, затем перехватить событие submit и сериализовать данных или просто получить значение отдельного поля ввода. Затем вы можете просто построить свой запрос данных с ним, как строку или объект. Существует также очень популярный плагин Form для jQuery, который делает все это проще.

Причина, по которой вы получаете ошибку, состоит в том, что 2-й аргумент json_encode не был добавлен до PHP 5.3.0. Так что, если у вас есть что-то раньше, это вам не доступно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...