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

标签 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;
}

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

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

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

最佳答案

基本上,在你的 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 注入(inject),即有人发送一些字符串来让您的查询执行您不希望执行的操作。

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

关于php - 调用与 javascript 函数位于不同文件中的 php 函数来从数据库检索数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4066432/

相关文章:

javascript - 为拖放界面选择 Javascript MVC 框架

javascript - 使用 Redux 在 React 组件中执行后台任务

javascript - jQuery动画中断问题

php - 在MVC架构中将AJAX的PHP文件放在哪里?

php - Mysql 将引号存储为 '

javascript - 想在通过追加按钮创建字段时提交表单元素

java - 如何在 Spring MVC/WebFlow 项目中进行 AJAX 调用

javascript - 如何将同步ajax转换为异步?

php - PHP 和 MySQL 中相同查询的不同 SQL 结果

php - 使用字符串开头和可选结尾的正则表达式多 AND/OR 单行匹配