如何调用与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
中的代码不起作用。它看起来正确但不起作用。
答案 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()
,以便确保从浏览器中获取的内容是正确的。