вызвать функцию php, которая находится в другом файле, чем функция javascript, для извлечения данных из базы данных - PullRequest
0 голосов
/ 01 ноября 2010

Как вы вызываете функцию PHP, которая находится в файле, отличном от функции JavaScript?

У меня есть функция JavaScript, которая получает переменную из функции onClick.Переменная - это идентификатор, который я буду использовать для извлечения данных из базы данных 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 . '\')">;

Функция ниже вызывается из JavaScript выше в divUpdate.php.Приведенная ниже функция также присутствует в модели - venue_model.php

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

Затем в контроллере home.php у меня есть функция, которую JavaScript использует для передачи идентификатора, который затем будет использоваться модельюдля извлечения данных из базы данных

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

По какой-то причине код в JavaScript divUpdater.php не работает.Это выглядит правильно, но не работает.

1 Ответ

2 голосов
/ 01 ноября 2010

В основном, в вашем Javascript вы должны сделать

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

или форму в вашей структуре, например

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

. Вы можете использовать Firebug в Firefox, чтобы сделать console.log(base_url)потому что он выглядит как

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

, а ваш URL выглядит примерно так:

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, когда кто-то отправляет какую-то строку, чтобы ваш запрос сделал что-то не то, что вы хотели.

Кроме того, сделайте несколько print_r() или var_dump() в вашем PHP-файле, чтобы вы моглиубедитесь, что вы получаете от браузера правильно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...