如何使用jquery调用php控制器方法?

时间:2010-04-05 10:39:14

标签: php json codeigniter jquery

我正在开发一个Web应用程序,我正在将jquery集成到其中...现在用jquery查找ajax调用到我的控制器函数....

我认为

jquery.ajax()会很有用......但是如何调用我的控制器方法......

$.ajax({
        type: "POST",
        url: "http://localhost/codeigniter_cup_myth_new/index.php/libraryController/loadbookdetails",
        data: "",
        contentType: "application/json; charset=utf-8",
        async: false,
        dataType: "json",
        success: function(jsonObj) {

function loadbookdetails()
{
    //Paging 
        $college=$_SESSION['college'];
        $this->load->library('pagination');
        $data['bookdetails'] = $this->librarymodel->selectbook($college);
        //$data['rackOptionData'] = $this->librarymodel->selectrack();
         if(empty($data['bookdetails']))
          {
             $data['comment'] = 'no record found!';
          }

        $this->load->view('bookdetials',$data);
}

我在此处获取此记录如何将其与jquery.ajax()函数一起使用以及如何将$data转换为json并将其与jquery一起使用并使用表格迭代...

4 个答案:

答案 0 :(得分:4)

你不能直接将jQuery连接到PHP函数,因为它们不能同时运行:PHP在服务器端执行(通常生成HTML页面),jQuery在客户端运行。 / p>

你可以让jQuery对PHP页面的URL进行Ajax调用。该PHP页面将是所需的控制器,并执行所请求的操作。

是否有预先定义的方法取决于您使用的PHP Framework(如果有)。

答案 1 :(得分:1)

对于PHP> = 5.2.0,您可以使用json_encode()。你的代码看起来像这样:

$this->load->view('bookdetails', json_encode($data));

可以找到关于CodeIgniter + AJAX的一系列参考文献here

答案 2 :(得分:0)

如果您已经拥有view/bookdetials.php 然后你需要的是(而不是你的javscript代码):

在页面上的某处添加div,如下所示:

<div id="ajax-palaceholder"></div>

然后添加此javascript代码:

<script type="text/javascript">
$(document).ready({
  $('#ajax-palaceholder').load('http://localhost/codeigniter_cup_myth_new/index.php/libraryController/loadbookdetails');
});
</script>

这将在页面加载时执行ajax请求,然后将加载的内容放入div#ajax-palaceholder

答案 3 :(得分:0)

Ajax请求必须与php脚本联系。该脚本必须返回数据。 您使用json作为响应格式:

dataType: "json",

因此,对于您的示例,只有输出表单脚本必须是json。它不能比json更多。

您的serwer脚本(bookdetials视图)将如下所示:

  //Initialise data
  $bookdetails = ...
  // json encode data
  echo json_encode( $bookdetails );
  // make sure nothing else go to the output
  ???

??? - 取决于系统。通常你必须在这里阻止pagelayout。

json作为回应很好但是对于大多数情况来说,HTML是......