如何使用 POST 将字符串发送到 php [重复]
Posted
技术标签:
【中文标题】如何使用 POST 将字符串发送到 php [重复]【英文标题】:How to send a string to php with POST [duplicate] 【发布时间】:2014-05-26 03:25:26 【问题描述】:我正在使用以下代码通过 xmlhttp 在 javascript 中发送一个字符串:
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 Request-URI Too Long”错误。
经过一番研究,我发现我需要改用“POST”。所以我把它改成:
xmlhttp.open("POST", "sendmail.php?q=" + str, true);
还有:
$q = $_POST['q'];
echo $q;
但这在使用 POST 时不会回显任何内容。我该如何修复它,让它像我使用 GET 时一样工作,但它可以处理大量数据?
edit 我现在正在尝试:
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);
【问题讨论】:
你不要使用url参数POST变量,它们是通过send method发送的 我基本上是在使用它来发送一个转换为字符串的 CSV 文件到我的 php 脚本,该脚本对其进行一些处理。所以它只是一个长字符串,需要被php脚本处理。 查看此链接-> ***.com/questions/2891574/… @Saman 我之前读过这篇文章,发现我需要使用 POST 而不是 GET,但它并没有说明如何使用它与 GET 的区别。 【参考方案1】:您不应该为您的 href 提供 URL 参数,而是应该send()
它们。此外,您应该始终使用encodeURIComponent()
对参数进行编码(至少当您的请求使用Content-type
"application/x-www-form-urlencoded"
时)。
你的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);
【讨论】:
@tadman:我只是在编辑那个东西。快!! 不能让这个错误妨碍您获得出色的答案。呵呵。 我的代码中的 str 字符串是 CSV 文件的内容。在这个答案中,它是否被某些东西覆盖了?我不确定我是否理解 json 部分。 对不起,这是我代码中的一个块,我已经更新了它 啊,谢谢,我现在试试【参考方案2】: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:
<?php
var_dump($_POST);
输出:
array(1)
["q"]=>
string(12) "This is test"
【讨论】:
哇,太棒了!非常感谢! 到底是什么问题? 我还没有解决问题所在,你可以吗?) 酷,完成!哈哈,不知道到底是什么问题。 谢谢你,你是个传奇!以上是关于如何使用 POST 将字符串发送到 php [重复]的主要内容,如果未能解决你的问题,请参考以下文章
如何将使用 GZIP 压缩的字符串从 Java App 发送到 PHP Web 服务
将 POST 数据从 Android 应用程序发送到 PHP MySQL