【问题标题】:Ajax post vars not seen in PHP scriptAjax post vars 在 PHP 脚本中看不到
【发布时间】:2012-05-24 13:18:55
【问题描述】:

我正在尝试对 php 脚本发起 ajax post 调用,它将更新我数据库中的一些值。

我的问题是,我的 php 脚本中没有看到 POST 值,或者至少我没有响应。

这是我的 javascript:

<script type="text/javascript">
$("btnOpsb" ).onclick = pinOpsb;
function pinOpsb(){
var params = "wxdata = test";
var ajaxRequest;
try{ajaxRequest = new XMLHttpRequest();} catch (e){try{ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");} catch (e) {try{ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");} catch (e){alert("Error: Browser/Settings conflict");return false;}}}
    ajaxRequest.onreadystatechange = function(){
        if(ajaxRequest.readyState == 4){
            alert(ajaxRequest.responseText);
        }
    }
    ajaxRequest.open("POST","wx2strip.php",true);
    ajaxRequest.setRequestHeader("Content-type","application/x-www-form-urlencoded");
    ajaxRequest.send("fname=Henry&lname=Ford");
}
</script>

在我的 wx2strip.php 中,如果 $_POST 中有任何内容,我尝试回显某些内容,但即使我只是在脚本顶部回显某些内容并退出,我创建的警报中仍然没有响应。

我尝试使用 get,但确实收到了回复。

任何帮助将不胜感激,谢谢。

【问题讨论】:

    标签: php ajax post


    【解决方案1】:

    添加这两行来设置正确的标题:

    ajaxRequest.setRequestHeader("Content-length", "fname=Henry&lname=Ford".length);
    ajaxRequest.setRequestHeader("Connection", "close");
    

    POST 需要内容长度。

    【讨论】:

    • 谢谢你,它确实解决了。我不知道长度是必需的,很高兴知道!
    【解决方案2】:

    我怀疑Aerik's answer 关于您遇到问题的原因是正确的。

    也就是说,既然您已经在 javascript 中使用了 jQuery,我相信如果您考虑使用 jQuery's $.post(),您将会简化很多事情。它将为您处理所有这些类型的并发症,因此如果有任何其他类似的小问题,您不会遇到问题。

    【讨论】:

    • 我以后一定会考虑使用 JQ。我只是喜欢在使用任何库(如 JQuery)之前先学习核心语言,以便更好地理解。
    猜你喜欢
    • 1970-01-01
    • 2021-10-24
    • 2013-03-03
    • 1970-01-01
    • 1970-01-01
    • 2017-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多