2013-06-22 2 views
0

У меня возникли проблемы с этим JQuery код, который я написал:JQuery получить без представления формы

$('.star').click(function(){ 

     $('#errors').removeClass().html(''); 
     var term = $(this).id; 
     var posting = $.get("aj_vote_opere.php", { rating: term, opera: '<?php echo $_GET['id']; ?>' }, 
     function(data) { 
     $('#errors').addClass(data.stileError).html(data.message);   
    }, "json"); 
} 

и мой HTML код выглядит следующим образом:

<div class="rating"> 
<span id="5" class="star">&star;</span><span id="4" class="star">&star;</span><span id="3" class="star">&star;</span><span id="2" class="star">&star;</span><span id="1" class="star">&star;</span> 
</div> 

<div id="errors"></div> 

В файле PHP Я хочу, чтобы хранить голосовать в БД. Кажется, что GET var не отправляется. Я думаю, это потому, что у меня нет формы для подачи. Я раньше использовал $ .post, но я понял, что нет формы = нет сообщения. Но что с $ .get? Я бы очень признателен за любые намеки. Спасибо заранее.

EDIT

это мой aj_vore_opere.php:

<?php 
include('Connections/dbConn.php'); 

    if(!isset($_SESSION['u_id'])) 
    { 
     $voto_q = "INSERT INTO ar_opere_rating (rate,opera) VALUES ('".$_GET['rating']."','".$_GET['id']."')"; 
     $voto_x = fln_query($voto_q); 

     $msg = $voto_q.'Il tuo voto &egrave; stato correttamente registrato.'; 
     $bgClass = ' ok'; 
    } 
    else 
    { 
     $msg = 'Attenzione, devi essere registrato per votare. Vuoi registrarti? <a href="reg.php">Clicca qui</a>'; 
     $bgClass = ' ko'; 
    } 


    echo json_encode(
     array(
     'message'=>$msg, 
     'stileError'=>$bgClass 
     ) 
    ); 
?> 
+0

У вас отсутствует закрывающая скобка в конце обработчика Click. Это опечатка? –

+0

<< Похоже, что никакой GET var не отправлен. >> Зайдите на свою сетевую вкладку, если запрос отправлен или нет. –

+0

В вашем коде '' '' вы должны использовать двойные кавычки вместо одиночного снаружи - '' "' – face

ответ

0

Это работает.
Я также проверил это на JSFiddle. Также проверяйте данные, отправляемые на сервер. { rating: term, opera: '<?php echo $_GET['id']; ?>' }. В вашем JS у вас есть свой ключ объекта opera, и вы пытались получить доступ к этому в своем PHP через $ _GET ['id'].

$('.star').click(function(){ 
    var term = $(this).attr('id'); 
    $('#errors').removeClass().html(''); 

    $.ajax({ 
     url: 'path/to/your/server', 
     type: 'post',  
     dataType: 'json', 
     data: { rating: term, opera: "<?php echo $_GET['id']; ?>"}, 
     success: function(data) { 
      console.log(data); 
      $('#errors') 
      .addClass(data.stileError) 
      .html(data.message);   
     }, 
     error: function(xhr, errmsg) { 
      console.log(errmsg); 
     } 
    }); 

}); 
+0

Ничего себе, это работает! Огромное спасибо!! – Aptivus

+0

Причина, по которой идентификатор оперы не устанавливается, заключается в том, что вы устанавливаете ключ в своем JS как ** opera **, и вы пытаетесь получить доступ к вашему PHP как ** $ _ GET ['id'] **. вместо ** $ _ GET ['opera'] ** –

+0

Примите ответ, если он сработает для вас. –

0

Попробуйте это может быть?

$('.star').click(function(){ 

    $('#errors').removeClass().html(''); 
    var term = $(this).attr('id'); 
    $.ajax({ 
     url:"aj_vote_opere.php", 
     data: { rating: term, id: <?php echo $_GET['id']; ?>}, 
     dataType: "jsonp", 
     success:function(data){ 
     console.log(data);//for debugging... 
     alert(data.message);//for debugging... 
     $('#errors').addClass(data.stileError).html(data.message); 
     } 
     }) 
    }); 
+0

Привет, KyleK, спасибо за ваш код. К сожалению, он ничего не делает. Функция в «сделанном», кажется, не срабатывает вообще. – Aptivus

+0

Попробуйте новое предложение, может быть? – KyleK

+0

Также ... вы уверены, что ваш aj_vote_opere.php возвращает json? – KyleK