【问题标题】:calling a codeigniter controller method from jquery从 jquery 调用 codeigniter 控制器方法
【发布时间】:2011-06-30 02:40:26
【问题描述】:

我想从 jquery 中调用 codeigniter 控制器方法 到目前为止,我正在尝试这样的事情,但它不起作用任何人都可以帮助我解决这个问题

$.ajax({type: "POST", url:"site/controller/method/",

                  success: function(){
                      alert("success");
                  },

                  error: function(xhr, textStatus, error){
                              alert(xhr.statusText);
                              alert(textStatus);
                              alert(error);
                          }

               });

【问题讨论】:

  • 您能详细说明一下吗?你的问题很模糊。一般来说,“不工作”并不是一个好的解释。
  • 您需要在您的 url 上设置完整路径,例如:http:localhost/site/controller/method/,我使用这种方式并且可以正常工作,您可以使用 'data: ' 或在您的网址中

标签: javascript jquery codeigniter


【解决方案1】:

我自己使用CI,发现在处理AJAX请求的时候需要直接指向文件,如果需要的话,用它push一些变量。

$.ajax({
    type: "POST",
    url: "system/application/views/ajax.php",
    data: "key=value",
    success: function(){ alert("success"); },
    error: function(xhr, textStatus, error){
        alert(xhr.statusText);
        alert(textStatus);
        alert(error);
     }
});

【讨论】:

  • @D Franks 感谢您的回答,但我如何在控制器中调用特定方法,通过上述过程,我将能够访问控制器,但不能访问控制器中的方法,我希望有办法解决这个问题
  • 虽然我不认为有办法直接做到这一点(或者我不知道),你可以添加一个 if 语句来运行你的方法,例如:if($_POST['call-from-ajax']){ run_method(); },或者您可以查看我在 CI wiki 中找到的内容:codeigniter.com/wiki/AJAX_for_CodeIgniter
  • @D Franks,您可以使用 site_url() 代替系统/应用程序部分。 $.ajax({ url: "",
【解决方案2】:

您的问题非常模糊:您收到 404 了吗?你得到一个javascript错误吗?出了什么问题?

如果您遇到 404 错误,最简单的方法是测试浏览器位置栏中的 URL:您可以在浏览器位置栏中打开的任何 URL 都可以复制到 javascript 中,并且肯定会起作用。从浏览器位置栏或锚点调用的 URL 与从 jquery postgetajax 调用的 URL 之间的代码点火器端应该没有区别。

我建议使用Firebug 来查看幕后发生的活动:它可能会让您更容易查明这些错误。

【讨论】:

  • 我使用了 mozilla firefox web 控制台,通常它会显示 post 请求,但是,这种情况下的问题是没有显示 post 请求并且没有错误
【解决方案3】:

我制作了一个名为 ajax 的控制器,其中有我所有的 axaj 方法。并返回 json 编码的东西。

jquery 的东西:

    $.post("ajax/stuff", function(data){
    alert(data.some_data); // John
 }, "json");

在 ajax 控制器中:

public function stuff()
{
    $response_array = array();
    $response_array['some_data'] = 'lorem ipsum';
    //$response_array['html'] = $this->load->view('popbox_error', $data, true);

    $data['json'] = json_encode($response_array);
    $this->load->view('json_response', $data);
}

json 视图:

<?php echo $json;

【讨论】:

  • 可以在 $.post("ajax/stuff" 上进一步解释。我真的不知道我应该放什么。我是 ajax 的新手。:) 提前谢谢
【解决方案4】:

试试这个

var base_url ='你的基本网址;

$.post(base_url+"/controller/function", {'param1': x,'param2':y}, function(data){

        if(data.length >0) {

            //do whatever you want

        }
    });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-17
    • 1970-01-01
    • 2011-06-29
    • 2020-07-18
    • 2011-09-23
    相关资源
    最近更新 更多