如何使用 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 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何添加php脚本来转发表单的副本

如何将使用 GZIP 压缩的字符串从 Java App 发送到 PHP Web 服务

如何将 post 请求从 php 发送到 python?

将 POST 数据从 Android 应用程序发送到 PHP MySQL

如何将int数组发送到post web api c#asp.net [重复]

如何通过 AJAX 发送“&”(和号)字符?