【问题标题】:XMLHttpRequest response from php function containing no data来自不包含数据的 php 函数的 XMLHttpRequest 响应
【发布时间】:2012-08-26 14:58:09
【问题描述】:

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

【问题讨论】:

    标签: php javascript codeigniter xmlhttprequest


    【解决方案1】:
    var post Str = "name="+proposalName+"&data="+data;
    

    这是一个语法错误。 JavaScript 在到达 Str 时会崩溃。永远不会发送 HTTP 请求。

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

    您需要一个onreadystatechange 函数。

    请参阅MDN documentation for XMLHttpRequest,其中有示例。

    【讨论】:

      【解决方案2】:

      几个主要问题:

      1) 您的 Javascript 无效 有效。

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

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

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

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

      【讨论】:

      • 是的,很抱歉,我在复制代码时出错,我的真实代码中没有空格。
      • 我将第三个 .open 参数更改为 false 并且它返回了我想要的结果,结果我唯一的错误是我自己对函数调用方式的误解!感谢您提供的信息,因为我是一名仍在学习 javascript 的 php 开发人员。
      • 同步 XMLHttpRequests 是不好的做法,在实际使用之前要三思。
      • 您真的不希望第三个.open 参数为假。而同步 works 用于一个小的作品定义——它 blocks。也就是说,它会冻结整个浏览器,直到数据返回。
      猜你喜欢
      • 2012-04-03
      • 1970-01-01
      • 2021-08-07
      • 2017-10-21
      • 1970-01-01
      • 2011-03-09
      • 1970-01-01
      • 1970-01-01
      • 2020-12-24
      相关资源
      最近更新 更多