【问题标题】:xmlHttpRequest post method giving junk valuesxmlHttpRequest post 方法给出垃圾值
【发布时间】: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


【解决方案1】:

检查是否isset()并退出脚本:

<?php
    if(isset($_POST["q"])){

        $clientData = $_POST["q"]; 
        $File = "WrittenByPHP.txt";
        $Handle = fopen($File, 'w');    
        $Data = $clientData;   
        fwrite($Handle, $Data);   
        fclose($Handle);
        die;
    }
?>

您应该在帖子中发送q 参数。

var params = "q="+document.getElementById('ta1').value;
xmlhttp.open("POST","ajax.php",true);
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.setRequestHeader("Content-length", params.length);
xmlhttp.setRequestHeader("Connection", "close");
xmlhttp.send(params);

表格:

<form>
   <textarea name="q" onKeyUp="loadXMLDoc()" id="ta1" cols=40 rows=10></textarea>
</form>

这将在每个onKeyUp 上提交,您应该将其更改为onblur

【讨论】:

  • 垃圾代码消失了.. 谢谢.. 但值没有被捕获... q 作为参数给出,如你所说 xmlhttp.send("q=dummy text");
  • 你必须添加我所有的javascript。
猜你喜欢
  • 1970-01-01
  • 2017-08-14
  • 1970-01-01
  • 1970-01-01
  • 2021-10-06
  • 1970-01-01
  • 2015-02-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多