【问题标题】:AJAX queryString mismatch in YIIYII中的AJAX查询字符串不匹配
【发布时间】:2013-03-08 15:25:58
【问题描述】:

我在页面中有一个带有 AJAX 脚本的 YII 视图

        <script>
            $(".tasks-add").click(function(){
                $.ajax({
                    type: 'get',
                    url: '<?php echo $this->createUrl('field')?>',
                    data: {
                        index: 1
                          },
                    });
                });
        </script>

虽然我已经使用 YII urlManager 来优化 URL 的“路径”样式,但现在这个 JS 正在以普通 URL 样式(http://myapp/task/field?index=1)进行调用:

'urlManager'=>array(
              'urlFormat'=>'path',
              'showScriptName'=>false,

我收到“错误请求错误”,因为 AJAX 请求的 URL 是旧的丑陋 ?arg=value1 样式。有没有办法让 AJAX 调用 URL 没有像 ?index=1 这样的查询字符串,但像 http://myapp/task/field/index/1

【问题讨论】:

    标签: ajax url yii query-string


    【解决方案1】:

    YII 方式

    <script>
            $(".tasks-add").click(function(){
                $.ajax({
                    type: 'get',
                    url: '<?php echo $this->createUrl('field',array('index'=>1));?>'
                });
        </script>
    

    <script>
            $(".tasks-add").click(function(){
                <?php echo CHtml::ajax(array(
                     'url'=>array('field','index'=>1),
                     'type'=>'get',
                  ));?>
                });
        </script>
    

    【讨论】:

      【解决方案2】:

      是的。手动完成。

          <script>
              $(".tasks-add").click(function(){
                  $.ajax({
                      type: 'get',
                      url: '<?php echo $this->createUrl('field')?>'+'/index/1'
                  });
          </script>
      

      【讨论】:

      • 这行得通!但我相信一定有更好的方法。感谢您的快速修复
      【解决方案3】:

      只需连接 URL 字符串。默认情况下,jQuery ajax 将在使用 GET 并包含数据时附加查询字符串参数。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-03-20
        • 2014-10-12
        • 2021-12-17
        • 1970-01-01
        • 2011-06-22
        • 1970-01-01
        • 1970-01-01
        • 2018-08-03
        相关资源
        最近更新 更多