使用 xmlhttprequest 将 javascript 变量传递给 PHP

Posted

技术标签:

【中文标题】使用 xmlhttprequest 将 javascript 变量传递给 PHP【英文标题】:passing a javascript variable to PHP with xmlhttprequest 【发布时间】:2013-12-27 23:13:57 【问题描述】:

我在将 javascript 变量发布到 php 文件时遇到问题。请有人告诉我这是怎么回事?

// Get Cookies
var getCookies = document.cookie;
cookiearray  = getCookies.split(';');

SelectedIds = cookiearray[0];

//take key value pair 

 name = cookiearray[0].split('=')[0];
 value = cookiearray[0].split('=')[1]; // The variable(values) i want to pass

// Create our XMLHttpRequest object
var hr = new XMLHttpRequest();

hr.open("POST", url, true);
var url = "page.php";

hr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
hr.onreadystatechange = function() 
    if(hr.readyState == 4 && hr.status == 200) 
        var return_data = hr.responseText;
        document.getElementById("Comp").innerhtml = return_data;
    


hr.send(value); // Request - Send this variable to PHP
document.getElementById("Comp").innerHTML = "loading...";

PHP

 $test = $_POST['value'];
 print_r($test); // NULL

谢谢

【问题讨论】:

我认为它不是你输出的数组,而是字符串,尝试使用 echo 代替 您是否检查了实际发送的帖子正文? var url = "page.php" 行应该是 before url 被引用。 (一排) @Marcell - 是的,但它不起作用.. 无论如何谢谢 【参考方案1】:

代替

 print_r($test);

使用回声

 echo $test;

由于$test 不是数组,而是字符串值。 print_r 用于打印数组。这就是为什么被赋予空值的原因。

而你在 ajax 中的发送函数应该是这样的:

hr.send("value="+value);

在发送函数中,传递的参数必须是这样的字符串:

"name=value&anothername="+encodeURIComponent(myVar)+"&so=on"

More tutorial is here.

【讨论】:

太棒了!我不得不添加 "value="+value 。非常感谢您的解释。【参考方案2】:

一段时间以来,我一直在尝试解决如何将我在 javascript 中格式化的相当长的字符串传递到 php 中以保存在文件中,我想我现在有了答案。至少它对我有用。

变量“str”在格式化后从另一个函数传递给“getGame”。我正在使用“POST”方法,因为字符串可能会很长。 代码是:-

    function getGame(str)
    //Sends data to the php process "save Game".
    var test = str;
    var xhr = new XMLHttpRequest();
    xhr.open("POST", "saveGame.php", true);
    xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    
    xhr.onreadystatechange = function() 
        if (this.readyState === 4 )
            alert(xhr.responseText);
        
    ;
    xhr.send("data="+ test); 

这会将“数据”发送到“saveGame.php”,并在其中将其保存到文件中,如下面的代码所示,并在警报下拉列表中返回一条消息。

<?php
$outputString = $_POST["data"];
$fp = fopen("C:\\xampp\\htdocs\\BowlsClub\\GamesSaved\\test26.txt","w");
if (!$fp)
    $message = "Error writing to file. Try again later!" ;
else
    fwrite($fp, $outputString);
    $message = "File saved!"; 

fclose($fp);

echo $message;
?>

这对我有用,我希望它对其他新手有用。

【讨论】:

以上是关于使用 xmlhttprequest 将 javascript 变量传递给 PHP的主要内容,如果未能解决你的问题,请参考以下文章

第108天:Ajax中XMLHttpRequest详解

Rhino 中的 XMLHttpRequest?

通过 XMLHttpRequest 将 gettext 与 PHP 中的 Javascript 一起使用

如何使用 XMLHTTPRequest 传递变量

使用 xmlhttprequest 将 javascript 变量传递给 PHP

使用 XMLHttpRequest 将多个文件上传到 Express.js 3.5 服务器