【问题标题】:passing array variable to ajax cakephp将数组变量传递给ajax cakephp
【发布时间】:2014-06-11 04:35:24
【问题描述】:

我正在尝试实现类似 this 的功能,用户可以在其中选择多个条件进行搜索。我的方法是用选定的条件填充一个数组并通过 ajax 传递它来发出请求。我的ajax中有以下代码

$( document ).ready(function() {


  <?php 
        //$array = array();
        $array["a"] = "Foo";
        $array["b"] = "Bar";
        $array["c"] = "Baz";
        $array["d"] = "Wom"; 
        $y = serialize($array);
        //$str = 'Yomi';
    ?>

  var y = '<?php echo $y ; ?>';

  $('.elementtosort').click(function(e){
    $.ajax({
          url: "http://localhost/elegante/weafe_length_prices/results/",
          data: y,
          cache: false,
          type: 'GET',
          dataType: 'Html',
          success: function (data) {
              $('#context').html(data);
          }
 });
});
});

在我的操作中,我试图调试传递的内容,但每次调整后都会得到奇怪的结果

     public function results(){
     if ($this->request->is('ajax')) {
          debug($_REQUEST);
          $this->render('filtered','ajax');
     }


}

我将不胜感激!

【问题讨论】:

  • 我不相信serialize 方法是你想在这里使用的。因为您正在处理 JavaScript,所以您可能希望输出为 json。像$y = json_encode($array); 这样的东西可能会更好。

标签: javascript php jquery ajax cakephp


【解决方案1】:

请改成

$y = serialize($array);

$y = json_encode($array);

【讨论】:

    【解决方案2】:

    请更改

    $y = serialize($array);
    

    $y = json_encode($array);
    

    并删除单引号

    var y = <?php echo $y ; ?>;
    

    【讨论】:

    • 谢谢。我在我的 ajax 调用中通过将 data: y 更改为 data: 'y='+y 找到了一种解决方法。用 debug(unserialize($_REQUEST['y'])); 返回我的数组在我的控制器操作中。
    猜你喜欢
    • 1970-01-01
    • 2014-04-23
    • 2012-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-28
    相关资源
    最近更新 更多