Отправка PHP json_encode массива в jQuery

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

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

// ================== PHP-код ================================ ======

$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 Конец ============================ =======

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

Другое дело, что раньше я был эхо только одно значение, то есть вычисленное значение (echo $ calculateValue), и все работало нормально, только после того, как я перешел на эхо-код в массиве json encode, который не работает

 var json = $.parseJSON(response); alert(json.message); 

Попробуйте установить параметр 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'); 

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

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

 $.parseJSON(response) 

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

EDIT: используя $ .getJSON , синтаксический анализ выполняется автоматически. Пишите меньше, делайте больше. 🙂

Все, что вам нужно сделать, это сказать 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.') } })