хорошо, я думаю, мне нужна помощь! Я искал каждое ключевое слово, которое я мог придумать, но я все еще не могу понять, пожалуйста, помогите. Я больше парень 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.') } })