Я не могу понять, почему этот скрипт не работает. Это связано с чем-то в скрипте/функции AJAX POST. Прямо сейчас, когда я нажимаю submit в своей форме, он запускает php-код на той же странице. То, что он должен сделать, это отправить значения формы в project_ajax.php, а затем на странице вернет var успеха, который будет истинным или ложным.jQuery AJAX Сообщение не работает
$(document).ready(function() {
$('div#didIt').hide();
$('form[name=adminForm]').submit(function() {
$.post('/project_ajax.php', {
action: $('[name=action]').val(),
pId: $('[name=pId]').val(),
name: $('[name=name]').val(),
url: $('[url=url]').val(),
summary: ('[summary=summary]').val()
}, function (data) {
if (data.success) {
$('div#didIt').slideDown('slow');
} else {
alert('Failed SA!');
}
}, 'json');
return false;
});
});
Ниже, что код для project_ajax.php ...
if($_POST['action'] == "update") {
//Prep the field for Query Entry!-----------------------------------
$pId = $_POST['pId'];
$name = trim(mysql_prep($_POST['name']));
$status = 1;
$url = trim(mysql_prep($_POST['url']));
$tumb = false; //False because I still need to make a script for it.
$summary = trim(mysql_prep($_POST['summary']));
$creater = $_SESSION['userId'];
$created = date("Ymd");
$q = "UPDATE " . DB_NAME . ".`projects` SET
name = '{$name}',
status = '{$status}',
url = '{$url}',
summary = '{$summary}',
creater = '{$creater}',
created = '{$created}'
WHERE `projects`.`id` = {$pId}";
$r = mysql_query($q, $connection);
if ($r) {
//Successful
$data['success'] = true;
$date['error'] = false;
$date['message'] = "You are the Greatest!";
} else {
//Fail
$data['success'] = false;
$data['error'] = true;
$date['message'] = "You can't do it fool!";
}
} else {
$data['success'] = false;
$date['error'] = true;
$data['message'] = "You Failed Stupid!";
}
echo json_encode($data);
Примечание: Когда нагрузка этой страницы. Браузер никогда не загружается. Синее кольцо на вкладке заголовка в IE8 вращается, как будто страница никогда не загружается финбом.
Ваш PHP-код выглядит так, как будто он подвержен атакам SQL Injection. Угадайте, что произойдет, если пользователь отправит 'pId' со значением' 123; DROP TABLE some_table'. См. Http://en.wikipedia.org/wiki/SQL_injection для описания проблемы и нескольких решений для PHP –
Ну, я считаю, что мой код подвержен SQL-инъекциям. Однако я не верю, что «pId» - это один. Только потому, что pId является скрытым значением, которое вытаскивается из базы данных. Разве пользователь не может изменять скрытые значения? Могут ли они изменить скрытые значения? – SgtOJ
вы присваиваете значение от '$ _POST' до' $ pId' без экранирования или приведения его в соответствие. Если 'projects.id' является целым числом, вы можете применить его к int (' $ pId = (int) $ _POST ['pId']; '). Но '$ pId' - не единственная проблема, поэтому я хочу отказаться от функций' mysql_ * 'и использовать что-то вроде PDO (http://php.net/manual/en/book.pdo.php) который поддерживает подготовленные заявления. –