来自php函数的XMLHttpRequest响应,不包含任何数据

时间:2012-08-31 19:14:27

标签: php javascript codeigniter xmlhttprequest

我正在使用一个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变量的复制问题

2 个答案:

答案 0 :(得分:3)

var post Str = "name="+proposalName+"&data="+data;

这是语法错误。当JavaScript点击Str时,它就会失败。永远不会发送HTTP请求。

即使它已被发送,您正在发出异步请求(open的第三个参数是true),因此在收到响应之前它不会锁定整个页面。在响应设置之前,您将阅读xmlHttp.responseText

您需要onreadystatechange功能。

请参阅包含示例的MDN documentation for XMLHttpRequest

答案 1 :(得分:2)

几个主要问题:

1)您的Javascript 无效。

var post Str = "name="+proposalName+"&data="+data;

post Str有空格。无论如何,此代码都不会运行。

2)您真的需要了解如何使用XMLHttpRequest

阅读本文,它应该有所帮助: http://www.jibbering.com/2002/4/httprequest.html