2012-02-13 3 views
1

Я не могу получить эту работу, страница уже имеет другие функции JQuery, работающие полностью нормально, так что я знаю, JQuery работает (jplayer и LazyLoad работают отлично)Run PHP файл через Jquery ссылку нажмите

вот мой Javascript функция:

<script type="text/javascript"> 
function upone() { 
    $.get("upone.php"); 
    return false; 
} 
</script> 

Вот моя ссылка

<a href="#" onclick="upone();">Like</a> 

и мой файл PHP «upone.php является:

<?php 
include("include/config.php"); 
include("include/functions/import.php"); 

if(isset($_SESSION['USERID'])&&$_SESSION['USERID']>=0&&is_numeric($_SESSION['USERID'])) 
{ 
    $USERID=$_SESSION['USERID']; 

    $query="INSERT INTO audio_like SET USERID='".mysql_real_escape_string($USERID)."'"; 
    $result=$conn->execute($query); 
} 

?> 

php-файл работает нормально, если я вручную ссылаюсь на него, нажатие на ссылку также приводит к обновлению страницы с #, добавленным на страницу. Есть идеи?

+0

Что вы видите в firebug или вашей консоли JavaScript? –

+0

Единственная вещь, которую я вижу в консоли javascript, - это постоянная ошибка, вызванная кнопкой google +, но удаление этого ничего не меняет – JimmyBanks

ответ

3

Вместо того чтобы использовать встроенный JavaScript, попробуйте сделать что-то вроде этого.

Дайте «Как» привязать класс, например:

<a href='#' class='likeLink'>Like</a> 

An вместо текущего раздела, использовать что-то вроде этого:

<script> 
    $(function() { 
     $('.likeLink').click(function() { 
      $.get('upone.php', function(data) { 
       alert("Server Returned: " + data); 
      }); 
      return false; 
     }); 
    }); 
</script> 

Если предупредительное сообщение возвращает то, что вы ожидаете от на странице PHP вы можете просто прокомментировать это для производства.

Кстати, я уже давно это напечатал и забыл, что я работал над этим. Извините, если он уже разрешен.

+0

Спасибо, спасибо. Могу ли я спросить, почему это работает, а другим способом нет? – JimmyBanks

+0

Первое, что я хочу отметить, это то, что вы должен делать все возможное, чтобы разметка, стилизация и сценарий были отделены друг от друга. Обычно в отдельных файлах, например, в CSS-файле для стилизации, JS-файл для javascript и HTML-файл и т. д. для разметки и в том числе другие файлы в теге head. это просто лучшая практика. Теперь, почему это работает, с jQuery, вы должны иметь все, что связано. – user1161625

+0

на событие (например, щелчок) внутри функции onReady ($ (function() {...}), который я ставил в верхней части тега сценария в моем примере. Это означает, что он будет ждать загрузки DOM, а затем запускает скрипты внутри скобок, поэтому тег привязки доступен до того, как он попытается его увидеть .... Мой телефон умираю, я опубликую больше tomo rrow. – user1161625

4

EDIT: Misunderstood вопрос

Используя приведенный ниже код будет избавиться от проблемы, когда страница обновляется после нажатия на ссылку. Причина, по которой это происходило ранее, заключается в том, что атрибут onclick не возвращал false, другими словами, это был бы правильный код: <a href="#" onclick="return upone();">Like</a>. Код ниже делает то же самое, но структурирован немного лучше.

HTML:

<a id="like" href="#" >Like</a> 

JS:

$("#like").click(function(){ 
    $.get("upone.php"); 
    return false; 
}); 
+0

OP ничего не сказал о отображении результата. PHP-скрипт выглядит как нечто похожее на upvote Stack Exchange, которое выполняет действие на стороне сервера, не возвращая ничего в браузер ... –

+0

На самом деле он просто предназначен для запуска фонового скрипта для upvote, но даже тогда этот код не работает ни по какой причине. : s EDIT: приведенный выше комментарий правильный – JimmyBanks

+0

в Firebug или javascript консоли, вы видите запрос ajax в консоли после того, как вы нажмете ссылку? Если да, то какая ошибка возникает? Скорее всего, путь со страницы к файлу не является «upone.php», но что-то вроде «/upone.php» или «/scripts/upone.php» – ggreiner