2014-01-21 5 views
0

Мне нужно отправить только 1 переменную в мой .php-файл, используя AJAX (используя метод POST) и показать его (с помощью php). Вот мой HTML код:Ajax не отправляет переменные на PHP POST

<script type = "text/javascript"> 
      var XMLHttpRequestObject = false; //LO INICIALIZAMOS A FALSO PARA DESPUES COMPROBAR QUE ESTA CREADO CORRECTAMENTE 
      if (window.XMLHttpRequest) { 
       XMLHttpRequestObject = new XMLHttpRequest(); 
      } else if (window.ActiveXObject) { 
       XMLHttpRequestObject = new ActiveXObject("Microsoft.XMLHTTP"); //PARA INTERNET EXPLORER 

      } 

      function irweb(idDiv) { 

       if (XMLHttpRequestObject) { 
        var objeto = document.getElementById(idDiv); 
        nom1="holaaaaaaa"; 
        // var nom1 = document.getElementById('nombre').value;      
       //var com1 = document.getElementById('comentarios').value; 

        XMLHttpRequestObject.open("POST", "p2.php?"); 
        XMLHttpRequestObject.setRequestHeader("Content-type","application/x-www-form-urlencoded"); 
        XMLHttpRequestObject.onreadystatechange = function() { 
         if (XMLHttpRequestObject.readyState == 4 && 
           XMLHttpRequestObject.status == 200) { 
          objeto.innerHTML = XMLHttpRequestObject.responseText; 
         } 
        } 
        XMLHttpRequestObject.send("n="+nom1); 
      } 
     } 
     </script> 
    </head> 
    <body> 
     <form method="post" id="formulario"> 

      <input type="submit" value="Enviar" onclick ="irweb('contenedor')" id="enviar"/> 
     </form> 
     <div id="contenedor" style="background-color:#99FF66;text-align:center;"></div>   
    </body> 

Вот мой PHP код:

<?php 
$cabe = <<< 'EOD' 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="es" lang="es"> 
<head> 
</head> 
<html> 
<body> 
<p>hola</p> 
</body> 
</html> 
EOD; 
$pasado1=$_POST["n"]; 
$pasado2=$_POST["c"]; 
echo "El parametro pasado es -->".$pasado1; 
echo "El parametro pasado es -->".$pasado2; 
?> 

Я назвал несколько предупреждений в коде JS, чтобы Чек, если я получаю значения правильно, и он работает, но когда Я называю файл PHP, ничего не происходит

+0

Вы можете использовать инструменты для разработчиков FF/Chrome, чтобы увидеть запрос, посылаемый и содержание отправки - так что это очень помогло бы найти проблему – nrathaus

+0

'?' здесь не требуется: XMLHttpRequestObject.open («POST», «p2.php?»); ..! –

+0

Не можете использовать JQuery для создания ajax-звонков? – Zword

ответ

2

При нажатии на кнопку отправки, вам:

  • Запустить JavaScript
  • Отправить форму

Вы не видите результата от JS, так как форма передает (перегрузочная страницу) перед readystate достигли 4.

Стоп формы подачи, если бежит JS:

onclick="irweb('contenedor'); return false;" 

... и исправить на стороне сервера скрипт, чтобы он мог обрабатывать данные POST, если JS не может по какой-либо причине и форма делает форму.

0

Вы пытались использовать jquery? Если нет, то попробуйте для легкого кодирования и обслуживания http://api.jquery.com/jQuery.post/

Аякса почтовый индекс просто, как показано ниже:

$.ajax({ 
    type: "POST", 
    url: url, 
    data: data, 
    success: success, 
    dataType: dataType 
}); 
Смежные вопросы