0

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

4

2 回答 2

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

那是语法错误。JavaScript 碰到Str. 永远不会发送 HTTP 请求。

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

你需要一个onreadystatechange函数。

请参阅包含示例的 XMLHttpRequest 的 MDN 文档。

于 2012-08-31T19:17:16.393 回答
2

几个主要问题:

1) 您的 Javascript无效

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

post Str有空间。无论如何,这段代码都不会运行。

2)你真的需要阅读如何使用XMLHttpRequest

阅读此内容,它应该会有所帮助: http ://www.jibbering.com/2002/4/httprequest.html

于 2012-08-31T19:20:21.440 回答