【发布时间】:2012-10-03 16:22:10
【问题描述】:
发送一个 post 请求和一个 PHP 文件将其写入一个文件,用于测试我刚刚使用 “虚拟文本”发送消息
//FILE - SSE.html
// xmlhttprequest post
//function.................................................
function loadXMLDoc(){
var xmlhttp;
if (window.XMLHttpRequest){
xmlhttp=new XMLHttpRequest();
console.log("request made");
}
else
{
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function(){
if (xmlhttp.readyState==4 && xmlhttp.status==200){
console.log(xmlhttp.responseText);
}
}
xmlhttp.open("POST","writeToFile.php",true);
xmlhttp.setRequestHeader("Content-type","text/plain;charset=UTF-8");
xmlhttp.send("dummy text");
}
// html body.................................................
<form>
<textarea name="q" onKeyUp="loadXMLDoc()" id="ta1" cols=40 rows=10></textarea>
</form>
<textarea id="ta2" cols=40 rows=10></textarea>
//PHP file.......
<?php
$clientData=$_POST["q"];
$File = "WrittenByPHP.txt";
$Handle = fopen($File, w');
$Data = $clientData;
fwrite($Handle, $Data);
fclose($Handle); ?>
控制台中的结果............一些垃圾 价值观.......................
request made SSE.html:46
( ! ) 注意:未定义索引:q in C:\wampnew\www\RD\writeToFile.php 第 4 行调用堆栈 #TimeMemoryFunctionLocation 10.0003252112{main}( )..\writeToFile.php:0----------------------------------- ----------------------------- 为什么会出现上述垃圾代码?提前谢谢。
【问题讨论】:
-
因为,您的 php 文件需要一个名为
q的变量,由表单发送。还将$Handle = fopen($File, w');替换为$Handle = fopen($File, 'w'); -
因为您的 php 代码已经打印了
Notice,它清楚地表明您尝试使用未定义的键q获取数组元素(换句话说,不存在)。
标签: php post xmlhttprequest