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


XMLHttpRequest response from php function containing no data

我使用的是一个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