Я пытаюсь заставить это работать, но у меня проблемы. Что мне здесь не хватает?
Я пытаюсь вставить некоторые данные через jQuery в локальную таблицу MySQL. Если я запустил save.php самостоятельно, он вставляет пустую строку в БД, так что это работает. Любые идеи?
**index.php**
<html>
<head>
<link rel="stylesheet" type="text/css" href="css/style.css" />
<script src="jquery.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function() {
$('form#submit').submit(function () {
var nume = $('#nume').val();
$.ajax({
type: "POST",
url: "save.php",
data: "nume="+ nume,
success: function() {
$('#nume').val('');
}
});
return false;
});
});
</script>
</head>
<body>
<form id="submit" method="post">
<p>Nume: <input id="nume" name="nume" type="text"></p>
<p><input id="submitButton" type="button" value="Submit"></p>
</form>
</body>
</html>
**save.php**
<?php
mysql_connect('localhost', 'root', 'root') or die(mysql_error());
mysql_select_db("test") or die(mysql_error());
$nume = htmlspecialchars(trim($_POST['nume']));
$add = "INSERT INTO ajax_test (nume) VALUES ('$nume')";
mysql_query($add) or die(mysql_error());
?>
Вы уверены, что форма отправляется? Ваша кнопка не является input type="submit" - это просто кнопка. Он не представит форму самостоятельно.
несколько вещей, которые вы могли бы сделать, чтобы помочь устранить неполадки.
Вставьте оповещение alert("submit");
после $('form#submit').submit(function () {
, чтобы увидеть, отправляется ли форма. Также придерживайтесь одного в успехе alert("success");
, чтобы узнать, получаете ли вы обратный вызов. Это покажет вам, на каком этапе он терпит неудачу, и поможет вам найти ваш поиск.
Вы также можете использовать плагин firebug для firefox, чтобы узнать, что отправляется через ajax, если он работает, чтобы увидеть, есть ли у вас какие-то значения. Подумайте, вам нужно отметить "Показать XMLHttpRequests в консоли"
Если решение Скотта Сондерса не работает, попробуйте следующее:
вместо
url: "save.php",
попробовать:
url: "save.php?nume=testvalue",
Если это также не работает, проверьте, читает ли ваш PHP скрипт входное значение из $_GET['nume']
или $_POST
вместо $_REQUEST['nume']
$nume
mysql_real_escape_string()
с помощьюmysql_real_escape_string()
иначе у вас будет уязвимость SQL-инъекции.