调用与javascript函数不同的文件中的php函数来从数据库中检索数据

时间:2010-11-01 03:09:31

标签: php javascript ajax codeigniter jquery

如何调用与JavaScript函数不同的PHP函数?

我有一个JavaScript函数,可以从onClick函数中获取变量。该变量是一个id,我将用它从MySQL数据库中检索数据。然后将该变量传递给PHP函数,该函数将访问数据库以获取数据并返回到我的JS函数进行显示,但它似乎不起作用。我怎样才能让它发挥作用?我正在使用CodeIgniter PHP。

这是我的代码:

JavaScript在另一个名为divUpdate.php

的文件中
<script type="text/javascript"
 src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"></script>

<script type="text/javascript">
    base_url = '<?= base_url();?>index.php/';
</script>
<script type="text/javascript">
    function changeDiv(venueID){
        //document.getElementById('venue_description').innerHTML=venueID;
        $.get(base_url+'home/get_venue_description/' + venueID,
            function(data) {
                $('venue_description').html(data);
            });
    }
</script>

onClick函数调用上面的JavaScript:

<li><a href="#self" class="menulink" class=&{ns4class};
  onClick="changeDiv(\''. $venue_details->VenueID . '\')">;

下面的函数是从divUpdate.php中的JavaScript调用的。以下功能也在模型中 - venue_model.php

function retrieveData($venueID){
    $query = $this->db->query("SELECT * FROM venue WHERE VenueID = '$venueID' ");
    return $query;
}

然后,在控制器home.php中,我有一个JavaScript用来传递id的函数,然后模型将使用该函数从数据库中检索数据

function get_venue_description($venueID){
    echo $this->venue_model->retrieveData($venueID);
}

由于某种原因,JavaScript divUpdater.php中的代码不起作用。它看起来正确但不起作用。

1 个答案:

答案 0 :(得分:2)

基本上,在你的Javascript中,你应该做

http://www.mywebsite.com/foo.php?venueID=123

或您框架中的表单,例如

http://www.mywebsite.com/controller/action/123

您可以在Firefox中使用Firebug来执行console.log(base_url),因为它看起来像

    base_url = '<?= base_url();?>index.php/';
    $.get(base_url+'home/get_venue_description/' + venueID,

您的网址如下:

http://www.mysite.com/index.php/home/get_venue_description/123

并在您的PHP文件中,执行

$venueID = $_GET['venueID'];
if (preg_match('/^\d+$/', $venueID) {
    $query = $this->db->query("SELECT * FROM venue WHERE VenueID = '$venueID' ");
}

preg_match()就是说,如果$venueID只有数字而没有其他内容。这是为了防止SQL注入,其中有人发送一些字符串来让你的查询做你不想要的事情。

另外,在PHP文件中执行一些print_r()var_dump(),以便确保从浏览器中获取的内容是正确的。