0

现在已经2天了,我仍然无法解决这个问题。所以基本上我试图通过 jquery ajax 调用一个 php 函数但没有任何工作,我不确定问题是什么......这是我的代码

阿贾克斯

$(document).ready(function() {
    $("#idCheck1").click(function(){
        $.ajax({
            url:'../../../../Controller/PostsController.php', 
            data: {action: 'update_checkbox'},
            success:function(result){
//                $("#dsa").html(result);
            } 
        });
    });
});

风景

<?php echo $this->Form->create("Posts", array("action" => "update_checkbox", "id" => "checkingBox")) ?>
                    <td>
                        <?php
                        echo $this->Form->input('Post.' . $i . '.id', array("type" => "hidden", "label" => false, "value" => $sum['posts']['id']))
                        ?>
                        <?php
                        echo $this->Form->input('Post.' . $i . '.done', array("type" => "checkbox", "label" => false, "value" => "1", "id" => "idCheck1"))
                        ?>
                    </td>
                </tr>
                <?php
                $i++;
            }
            ?>

        </table>
        <?php echo $this->Form->end(); ?>

控制器

 public function update_checkbox() {
        //    debug($this->data);
        $var = $this->Post->saveCheckBox($this->data);
        $this->set("result", $var);
    }

该模型

public function saveCheckBox($checkbox) {
        debug($checkbox);
        $this->saveAll($checkbox['Post']);
    }
4

1 回答 1

2

网址

url:'../../../../Controller/PostsController.php'

看起来不对。由于这是一个通过浏览器的 AJAX 请求,因此您不能使用尝试在文件夹层次结构中向上移动的相对路径,因为浏览器 url 不能以这种方式工作。您应该发出该请求,以便它通过 Web 服务器传递,即 url 应该类似于以下之一:

url:'http://localhost/Controller/PostsController.php'

或者

url:'/Controller/PostsController.php'

第一个选项是绝对 url,但这也使代码不太灵活(假设您将域从 localhost 更改为其他内容)。第二个选项是相对 URL,但它是相对于您的 Web 服务器的域根目录的(即在示例中它仍会解析为 localhost/Controller...)。

在这两种情况下,根据您发布的内容,您的 PHP 文件应该位于站点文档根目录中的 Controller/ 文件夹中。然而,您的代码结构表明您正在使用某种框架(例如 Zend、Symfony 或 CodeIgniter)?如果是这种情况,如果您发布有关您正在使用的框架的信息以及可能会改变答案的信息,将会很有帮助。

更新

对于 cakePHP,您应该通过前端控制器访问控制器,这意味着 URL 应如下所示:

url:'/posts'

更新 2

对于 jquery 端,一个完整的 ajax 请求示例可能如下所示:

$(".idCheck").click(
   function(){ 
      var idVal = $(this).val();

      $.ajax({ 
         url:'/posts/update_checkbox', 
         data: {id: idVal }, 
         type: 'POST', 
         success:function(result){ 
            $("#dsa").html(result); 
         } 
      }); 
  });

请注意,该 URL 已经包含 update_checkbox 操作(即您要执行的操作的完整 url),并且数据对象包含您要发送到服务器的单击元素的值。如果要发送完整的表单,还可以使用 $('#myformselector').serialize() 将表单中的所有输入转换为适合 ajax 请求的数据属性的对象。

于 2012-07-04T08:27:24.733 回答