2014-02-08 3 views
0

Я не могу запустить свой PHP-скрипт одним нажатием кнопки.

Если я запускаю скрипт через терминал, 'php get_funny_status.php', он возвращает правильный результат. Однако я не могу это сделать через AJAX. Появляется предупреждение beginning ajax, но я не получаю никакого ответа.

Я что-то упустил?

EDIT: Я проверяю это приложение просмотр Предварительный просмотр Browser в Adobe Dreamweaver (я не уверен, если это не имеет ничего общего с вопросом)

<script> 

$(document).ready(function() { 

    $(".nextStatus").click(function() { 

     alert('beginning ajax'); 

     var statusNumber = '5'; 

     $.get('get_funny_status.php?' + statusNumber, function(responseText) { 
      alert(responseText); 
     }); 

    }); 
}); 

</script> 

Вот мой PHP скрипт:

<?php 

    //initialize DB stuff 

    $status_text_query = "SELECT * FROM funny_status WHERE STATUS_NUM = '". $_GET['statusNumber']."'"; 

    $result = mysql_query($status_text_query); 

    while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) { 

     echo 'num likes: ' . $row['NUM_LIKES']; 
     echo 'num dislikes: ' . $row['NUM_DISLIKES']; 
     echo 'status text: ' . $row['STATUS_TEXT']; 
     echo 'status num: ' . $row['STATUS_NUM']; 

    } 
?> 
+0

'_GET' должно быть' $ _GET'. Правильно ли указан путь к файлу? –

+0

Если бы я был вами, я бы использовал mysqli или PDO вместо функций mysql_. Первая строка - хакерский восторг, подверженный SQL Injection. –

+0

Похоже, у вас есть хорошие ответы на работу снизу. Я также должен указать, что у вас есть уязвимость, связанная с большой нагрузкой SQL, которую вы должны подумать об исправлении. –

ответ

0

Есть несколько вопросов, которые я вижу:

  1. В вашем PHP, _GET должен быть $_GET.

    $status_text_query = "SELECT * FROM funny_status WHERE STATUS_NUM = '" 
        . $_GET['statusNumber']."'"; 
    
  2. В вашем вызове AJAX, вам необходимо отправить ваш параметр ?statusNumber=' + statusNumber, ...

    $.get('get_funny_status.php?statusNumber=' + statusNumber, 
        function(responseText) { 
    

Не обязательно ошибка синтаксиса: я заметил, что вы используете mysql_* для доступа к базе данных , Это a bad idea; Я бы посоветовал переключиться на функции mysqli_* или на класс PDO. В связи с этой проблемой, если бы я установил statusNumber на что-то вроде «'; DELETE FROM funny_status;--», я смог бы удалить все данные в этой таблице. Это называется SQL Injection, и это серьезная проблема безопасности.

1

Устранить из:

$.get('get_funny_status.php?statusNumber', function(responseText) { 
     alert(responseText); 
    }); 

к

$.get('get_funny_status.php?statusNumber='+statusNumber, function(responseText) { 
     alert(responseText); 
    }); 
Смежные вопросы