我使用的是一个codeigniter应用程序,该应用程序根据模型中函数返回的数据库查询动态生成一些html元素。
在我的一个视图中,我使用XMLHttpRequest调用一个控制器中的php函数,该函数反过来以字符串的形式从我的模型中获取数据,并为responseText回声它。我的javascript代码如下:
var xmlHttp = new XMLHttpRequest();
xmlHttp.open("POST", "/controller/my_function", true);
var postStr = "name="+proposalName+"&data="+data;
xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
xmlHttp.send(postStr);
var response = xmlHttp.responseText;
被调用的函数如下所示:
public function my_function(){
$data['name'] = $this->input->post('name');
$data['data'] = $this->input->post('data');
$string = $this->my_model->my_model_function($data);
echo $string;
}
模型正确地返回字符串,即使在函数中只回显了一个随机数或字符串,它仍然没有从响应文本中得到任何信息。无论我试图在函数中回显什么,响应文本中似乎都没有任何内容。我在这里做错了什么?如何获取responseText以从php函数中获取正确的值?
编辑:修复了postStr变量的复制问题
var post Str = "name="+proposalName+"&data="+data;
这是一个语法错误。当JavaScript到达Str
时,它会崩溃。HTTP请求从不发送。
即使它已经发送,您也在发出异步请求(open
的第三个参数是true
),因此在收到响应之前,它不会锁定整个页面。您将在响应设置xmlHttp.responseText
之前读取它。
您需要一个onreadystatechange
函数。
请参阅XMLHttpRequest的MDN文档,其中有一些示例。
几个主要问题:
1) 您的Javascript无效。
var post Str = "name="+proposalName+"&data="+data;
CCD_ 6具有空间。不管怎样,这段代码都不会运行。
2) 你真的需要了解如何使用XMLHttpRequest
阅读本文,它应该会有所帮助:http://www.jibbering.com/2002/4/httprequest.html