2013-04-17 3 views
0

Хотя я следовал примеру кода от http://api.jquery.com/jQuery.post/ и, конечно, Stackoverflow я не смог найти решение моей проблемы.Сообщение AJAX для php

У меня есть тумблер изображение в формате HTML, который каждый раз, когда пользователь нажимает на нее, изменяет изображение и обновлять колонку в DB.Here является код:

HTML

<input type="image" src="smileys/heart.gif" class="play" onclick="toggle(this,'<?php echo $ida;?>')"/> 

AJAX

function toggle(el,al){ 
     if(el.className=="play") 
     { 
      el.src='smileys/lol.gif'; 
      el.className="pause"; 
    $.post("update.php", { "hr": 1, "ida": al }); 

     } 
     else if(el.className=="pause") 
     { 
      el.src='smileys/heart.gif'; 
      el.className="play"; 
    $.post("update.php", { "hr": 0, "ida": al }); 
     } 
     console.log(al); 
     return false; 
    } 

update.php

<?php 
$host  = "localhost"; 
$user  = "user"; 
$pass  = "pass"; 
$database = "db"; 

$heart=$_GET["hr"]; 
$ida=$_GET["ida"]; 

$con = mysql_connect($host,$user,$pass); 
if (!$con) 
    { 
    die('Could not connect: ' . mysql_error()); 
    } 
mysql_select_db($database, $con); 
mysql_query("UPDATE tablename SET heart='$heart' WHERE id='$ida'"); 
?> 

Функция переключения хорошо работает, но БД не обновляется, когда пользователь нажимает кнопку и изображение. Я считаю, что это связано с функцией $.post, не передавая корректно данные на php.

BTW, если я сделать

http://domain.com/update.php?hr=1&ida=127 

это работает.

ПРИМЕЧАНИЕ. Я использую mysql, а не PDO только для этого примера. ... и да, мой код грязный и уродливый, все еще учащийся. Любая помощь? Thanks

+0

«Я использую mysql, а не PDO только для этого примера» - И вы делаете это так, чтобы открывать огромные дыры в безопасности. – Quentin

+0

«все еще учится» - Почему вы изучаете устаревший API вместо лучшего, который будет по-прежнему хорошо поддерживаться? – Quentin

+0

означает, что я преобразую его в PDO, когда его окончательный. – Theodoros80

ответ

3

Ну, это _POST запрос, а не _GET, поэтому, чтобы зафиксировать его значения, вам нужно использовать $_POST вместо $_GET.

Кроме того, как я заметил, есть и ссылка _GET, поэтому вам нужно изменить $.post на $.get.

+1

Или измените JS на '$ .get' вместо' $ .post' –

+0

Я стесняюсь :(так просто! Спасибо. Я буду принимать, когда смогу. – Theodoros80

+0

@PhilippeBoissonneault тоже прав. –

Смежные вопросы