Отправка массива PHP json_encode в jQuery - PullRequest
3 голосов
/ 22 ноября 2010

ок, думаю, мне нужна помощь!Я искал каждое ключевое слово, которое мог придумать, но все еще не могу понять, пожалуйста, помогите.Я более фанат php, и я только начал с jQuery.

По сути, я пытаюсь отправить сообщение jQuery из функции click.И основываясь на том, что возвращает моя php-функция, покажите / скройте 2 div.Моя функция php возвращает массив "json_encode" с двумя простыми значениями, например:

// ================== PHP code ==================================

$message_for_user = "blah blah";
$calculatedValue = 1230;
$responseVar = array(
                    'message'=>$message_for_user,
                    'calculatedValue'=>$calculatedValue
                    );
echo (json_encode($responseVar));

// ================== Конец PHP-кода ========================================

Мой код JavaScript должен принимать значения, возвращаемые php:

// ================== Код JavaScript ==================================

$("div.calculator_result").click(function()
{
    $.post('myCalculator.php' ,{qid:itemID},function(response)
    {
        $("div.calculation_value").show(500).html(response['calculatedValue']);
        $("div#message_for_user").show(500).html(response['message']);
    }
}

// ================== Javascript code End ========================================

К сожалению,на стороне javascript моего проекта div не обновляются значениями, возвращенными моими php-функциями .... где я ошибаюсь?Я надеюсь, что я был ясен в своем вопросе, если нет, дайте мне знать, и я предоставлю любую дополнительную информацию, необходимую.

Другое дело, что раньше я отражал только одно значение, то естьвычисленное значение (echo $ selectedValue) и все работало нормально, только после того, как я перешел к echo'у в массиве кодирования json, что вещи не работают

Ответы [ 4 ]

19 голосов
/ 22 ноября 2010
var json = $.parseJSON(response); alert(json.message);
2 голосов
/ 22 ноября 2010

Попробуйте установить параметр dataType:

$.post('myCalculator.php' ,{qid:itemID},function(response)
{
    $("div.calculation_value").show(500).html(response['calculatedValue']);
    $("div#message_for_user").show(500).html(response['message']);
}, 'json');

Примечание. Я также добавил закрывающие скобки ) там, где вы их пропустили.

1 голос
/ 22 ноября 2010

Вы должны проанализировать ответ JSON.jQuery имеет эту встроенную функциональность (к счастью, потому что в противном случае IE6 и 7 изначально не поддерживают JSON).Установите переменную, равную этой:

$.parseJSON(response)

А затем, если вы не знакомы с форматом JSON, проверьте заголовки ответа (используя Firebug или аналогичный), и это поможет вам выбрать значения ключей.ты хочешь.Если вы зацикливаетесь, я бы посмотрел на для операторов in * после анализа ответа.

РЕДАКТИРОВАТЬ: Используя $. GetJSON , анализ выполняется автоматически,Пиши меньше, делай больше.:)

0 голосов
/ 04 ноября 2015

Все, что вам нужно сделать, это сообщить Ajax-вызову, что вы получаете тип данных "json".Другими словами ...

$.ajax({
   url: "external_file",
   method:"post",
   dataType: "json",  // **************** Note dataType****************
   success:function(response){
       console.log(response)
       // Response will be a javascript array, instead of a string.
   },
   error: function(){
       alert('something went wrong.')
   }
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...