如何使用POST将字符串发送给php
如何使用POST将字符串发送给php
这个问题已经在这里有答案:
我正在使用以下代码通过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日
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" }
你不应该在 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); }