Как отправить переменную в URL через AJAX? - PullRequest
0 голосов
/ 31 июля 2011

Я отправляю переменную так:

xmlhttp.open("GET","insert-karma.php?pid=<? echo $pid; ?>",true);

Кажется, что проблема с AJAX не возникает, если я проверяю скрипт, PHP корректно отображает целое число. (Отображает URL как: insert-karma.php?pid=5). Однако PHP не получает переменную. (Я попытался повторить, и это не показывает пыльник)

Это файл PHP:

// Connect to db;

$pid = $_POST['pid'];

$sql="UPDATE Poems SET Karma = Karma + 1 WHERE Pid = '$pid'";

// Disconnect form database;

Что я делаю не так? Как мне удается отправить $pid на PHP update-karma.php?

Ответы [ 4 ]

2 голосов
/ 31 июля 2011

Вы отправляете переменную с помощью GET, поэтому в вашем php вы должны использовать переменную $ _GET

$pid = $_GET["pid"];

Также избегайте использования вашей переменной непосредственно в SQL-запросе. вы будете уязвимы для инъекций sql.

при использовании mysql:

$pid = mysql_real_escape_string($_GET["pid"]);

или если вы передаете целое число:

$pid = (int)$_GET["pid"];
2 голосов
/ 31 июля 2011

try $ pid = $ _GET ['pid']

или

$ pid = $ _REQUEST ['pid'];

0 голосов
/ 31 июля 2011

Во-первых, вы не должны использовать PHP в своих ajax-запросах, это просто усложняет ситуацию, а PHP для сценариев на стороне сервера, прежде всего, вы должны использовать xmlhttp.open ("POST", "insert-karma ....) если вы просто используете POST В-третьих, единственное важное (не единственное, но важное) различие между POST и Get заключается в следующем:

GET-запросы могут кэшироваться

GET-запросы могут оставаться вистория браузера

GET-запросы могут быть добавлены в закладки

GET-запросы могут распространяться и делиться

GET-запросы могут быть взломаны lool

, поэтому вы не можете использовать Get Forнебезопасное и опасное действие, такое как ВХОД ИЛИ ...

POST Может обрабатывать слишком долго Данные

Запись более защищена, потому что она не будет кэширована или сохранена в истории или добавлена ​​в закладки

Вы можете четко заметить, что POST не отображается в адресной строке браузера, но Get do 'www.anything.com/index.php?bla=bhe'

Я надеюсь, что помогаю здесь !!:)

0 голосов
/ 31 июля 2011

Просто предложение здесь, так как вы уже получили ответ.Попробуйте использовать библиотеку javascript, чтобы помочь вам во время написания кода JS.Я бы предложил jquery

А также, пожалуйста, прочитайте, в чем разница между запросами GET, POST и когда это следует использовать.

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