Json не соответствует между оператором оповещения и функциями - PullRequest
0 голосов
/ 02 апреля 2012

У меня есть функция, которая возвращает json (networks_function.php собирает некоторые массивы и кодирует их как json):

var json;
$(document).ready(function(){
    $.post("network_function.php", function(data) {
        json = data;
        alert(json);
    });
});

Я передаю переменную json новой функции, которая неправильно ее интерпретирует. Тем не менее, когда я копирую текст оператора оповещения и жестко кодирую его во вторую функцию (и устанавливаю его равным переменной json), он работает. Я уверен, что это не проблема с переменной областью. Кто-нибудь знает, почему это может быть?

Ответы [ 2 ]

0 голосов
/ 02 апреля 2012

Я вижу, что вы используете php на сервере. Возможно, вы захотите сделать это:

Backend:

$dataToSend = array("item1"=>"data1","item2"=>"data2");
echo json_encode($dataToSend);

Затем вы можете получить «данные» в jQuery как объект JSON. Если php возвращает его в виде строки Просто сделай:

json = JSON.parse(data);

Ваш php по большей части не возвращает должным образом json, поэтому могут возникнуть проблемы с кавычками вокруг вашей строки в вашем эхо. Это утомительно использовать правильные кавычки в php при возврате JSON, поэтому самым простым способом будет использование json_encode () для массива.

0 голосов
/ 02 апреля 2012

Кажется, это не JSON.Просто скажите jQuery, что это данные JSON:

var json;
$(document).ready(function(){
    $.post("network_function.php", function(data) {
        json = data;
        alert(json);
    }, "json");
});

Причина, по которой это копирование и вставка работает, заключается в том, что строка JSON при вставке в контекст JS является литералом объекта.Когда вы предупреждаете фактический объект (именно это вы хотите предупреждать), вы увидите «Объект» и, возможно, немного отладочной информации в зависимости от браузера.

Обратите внимание, что вы могли (и должны) такжеотправьте заголовки json в ваш файл PHP

header("Content-Type: application/json");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...