Ajax不会通过POST将变量发送到PHP

时间:2014-01-21 09:09:34

标签: javascript php html ajax

我需要使用AJAX(使用方法POST)向我的.php文件发送一个变量并显示它(使用php)。这是我的HTML代码:

<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文件时,没有任何反应

2 个答案:

答案 0 :(得分:2)

当您点击提交按钮时,您:

  • 运行JavaScript
  • 提交表格

您没有看到JS的结果,因为表单在readystate达到4之前提交(重新加载页面)。

如果JS运行,请停止提交表单:

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

...并修复服务器端脚本,以便在JS因任何原因失败并且表单提交时它可以处理POST数据。

答案 1 :(得分:0)

你尝试过使用jquery吗?如果没有,请尝试轻松编码和维护 http://api.jquery.com/jQuery.post/

ajax邮政编码简单如下:

$.ajax({
  type: "POST",
  url: url,
  data: data,
  success: success,
  dataType: dataType
});