我遇到问题将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
由于
答案 0 :(得分:2)
而不是
print_r($test);
使用echo
echo $test;
由于$test
不是数组,因此是字符串值。 print_r
用于打印数组。这就是给出空值的原因。
你在ajax中的发送功能应该是这样的:
hr.send("value="+value);
在send函数中,传递的参数必须是这样的字符串:
"name=value&anothername="+encodeURIComponent(myVar)+"&so=on"
答案 1 :(得分:1)
一段时间以来,我一直在尝试解决如何将我在 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;
?>
这对我有用,我希望它对其他新手有用。