如何使用POST将字符串发送给php

16 浏览
0 Comments

如何使用POST将字符串发送给php

这个问题已经在这里有答案

使用XMLHttpRequest发送POST数据

我正在使用以下代码通过javascript的xmlhttp发送一个字符串:

    function SendPHP(str, callback) {
    if (window.XMLHttpRequest) { // code for IE7+, Firefox, Chrome, Opera, Safari
        xmlhttp = new XMLHttpRequest();
    } else { // code for IE6, IE5
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }
    xmlhttp.onreadystatechange = function () {
        if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
                         callback(xmlhttp.responseText); //invoke the callback
        }
    }
        xmlhttp.open("GET", "testpost.php?q=" + encodeURIComponent(str), true);
    xmlhttp.send();
}

还有一些测试php:

$q = $_GET['q'];
echo $q;

这很好,直到我开始发送一个较大的字符串,此时我会收到“HTTP / 1.1 414请求URI过长”的错误。

经过一番研究,我发现我需要使用“POST”。所以我把它改为:

xmlhttp.open("POST", "sendmail.php?q=" + str, true);

和:

$q = $_POST['q'];
echo $q;

但是在使用POST时没有回应任何内容。如何修复它,使它像使用GET一样工作,但可以处理大量的数据字符串?

编辑我现在正在尝试使用:

function testNewPHP(str){
    xmlhttp = new XMLHttpRequest();
str = "q=" + encodeURIComponent(str);
  alert (str);
xmlhttp.open("POST","testpost.php", true);
xmlhttp.onreadystatechange=function(){
  if (xmlhttp.readyState == 4){
     if(xmlhttp.status == 200){
                            alert (xmlhttp.responseText);
     }
    }
  };
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.send(str);
}

admin 更改状态以发布 2023年5月24日
0
0 Comments

JavaScript :

 function testNewPHP(){
var str = "This is test";
xmlhttp = new XMLHttpRequest();
str = "q=" + encodeURIComponent(str);
alert (str);
xmlhttp.open("POST","testpost.php", true);
xmlhttp.onreadystatechange=function(){
    if (xmlhttp.readyState == 4){
        if(xmlhttp.status == 200){
            alert (xmlhttp.responseText);
        }
    }
};
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.send(str);
}

在您的主目录中的 testpost.php :


输出:

array(1) {
["q"]=>
string(12) "This is test"
}

0
0 Comments

你不应该在 href 属性里提供 URL 参数,而是应该使用 send() 方法来发送它们。此外,你应该始终使用 encodeURIComponent() 对参数进行编码(至少当你的请求使用"application/x-www-form-urlencoded"Content-type 时)。

你的 JavaScript 函数:

function testNewPHP(){
var str = "This is test";
xmlhttp = new XMLHttpRequest();
str = "q=" + encodeURIComponent(str);
alert (str);
xmlhttp.open("POST","testpost.php", true);
xmlhttp.onreadystatechange=function(){
    if (xmlhttp.readyState == 4){
        if(xmlhttp.status == 200){
            alert (xmlhttp.responseText);
        }
    }
};
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.send(str);
}

0