Я пытаюсь напечатать значения любых текстовых полей. Я использую AJAX, jQuery и PHP, но код не работает. Он не показывает внутри div id='pinta'
, он пуст.
JavaScript:
$('#Enviar0').click(function() { var input1 =$('#primero input').serialize(); $.ajax({ type:"POST", url:"pintaParte.php", data:input1, success: function(data) { $("#pinta").html(data); } }); });
PHP:
<?php if(isset($_POST['input1'])){ foreach ($_POST['input1'] as $key => $value) { echo "<p>".$key."</p>"; echo "<p>".$value."</p>"; echo "<hr />"; } } ?>
Поскольку вы явно не указываете имя переменной post, она не будет существовать на стороне сервера.
Ваш элемент данных должен выглядеть так:
data: {"input1": input1}
Попробуйте это, используя JSON:
$('#Enviar0').click(function() { var input1 = $('#primero input').serialize(); $.ajax({ type: "POST", url: "pintaParte.php", data: {"input1": input1} success: function(data) { var key; var value; var string = ''; // You have to parse the json array. for(var i = 0; i < data.length ; i++) { key = data[i].key; value = data[i].value; string += "<p>"+key+"</p>"; string += "<p>"+value+"</p>"; } $("#pinta").html(string); }); });
Где pintaParte.php выглядит так:
<?php $input1 = isset($_POST['input1']) ? $_POST['input1'] : array(); if(sizeof($input1) == 0) { $json[] = array(); } else { foreach ($input1 as $key => $value) { $json[] = array('key' => $key, 'value' => $value); } } echo json_encode($json); flush(); ?>
Проблема в том, что для чтения атрибута named object вам нужно установить это как ключевое значение в объекте JavaScript – на данный момент вы просто передаете строку.
Попробуй это:
$('#Enviar0').click(function() { var input1 =$('#primero input').serialize(); $.ajax({ type:"POST", url:"pintaParte.php", data: { input1: input1 }, success: function(data) { $("#pinta").html(data); } }); });
Вы можете использовать браузер AJAX Explorer, очень полезный для отладки таких проблем. У Chrome и Safari есть один встроенный, а в Firefox есть плагин Firebug. Они позволят вам наблюдать за операцией в режиме реального времени, включая параметры GET / POST, которые фактически отправляются.
Удалите ключ из цикла foreach:
<?php if(isset($_POST['input1'])){ foreach ($_POST as $key => $value) { echo "<p>".$key."</p>"; echo "<p>".$value."</p>"; echo "<hr />"; } } ?>