2014-01-21 158 views
0

我只需要使用AJAX(使用POST方法)向我的.php文件發送一個變量並顯示它(使用php)。這裏是我的HTML代碼:Ajax不會通過POST向PHP發送變量

<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 
});