【问题标题】:$this->data empty after performing an ajax call执行 ajax 调用后 $this->data 为空
【发布时间】:2012-06-29 16:09:54
【问题描述】:

我正在使用来自另一个选择框的数据来实现一个填充选择框的函数。

//views/users/ajax.ctp
$.ajax({
        url: url,
        type: "GET",
        dataType: "html",
        data:"arr=" + result,
        success: function(data){
            document.getElementById(child).innerHTML = data;
        }
    });

从上面的代码可以看出,调用传递的数据应该可以在 data 变量下的 getSectors() 函数中访问:

//controllers/users_controller.php
function getSectors() {
    $this->set('data', $this->data);
    $this->render('/users/ajax_data');
}

在相应的视图中我尝试查看传递的数据的内容:

//views/users/ajax_data.ctp
<?php var_dump($data); ?>

$data 为空。

在 Firebug 中调试显示调用被正确调用 (status 200 ok) 并且 XMLHttpRequest 包含参数和值。

您有什么建议可能是错误的吗?

【问题讨论】:

  • 你在 ajax 调用中使用什么 url... url?
  • 在firebug中,响应是否包含预期的html?
  • @barts getSectors,是的,firebug 输出预期的 html

标签: php ajax cakephp


【解决方案1】:

为了让Cake 填充$this-&gt;data 变量,发送的数据需要遵循data[Model][field] 格式,或者至少是data[..] 数组的一部分。如果明确命名为arr,Cake 不会将其放入$this-&gt;data 变量中。

【讨论】:

  • 可能值得一提$this-&gt;params
  • 如果我想将数据命名为arr,如何访问数据?
猜你喜欢
  • 2012-04-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多