#jquery #ajax
#jquery #ajax
Вопрос:
Я использую jquery для отправки формы, и по какой-то странной причине в файл PHP отправляются только первые 5 переменных. Код выглядит следующим образом:
$("form#alcs_submit").submit(function() {
var game_one = $('#game_one').val();
var game_two = $('#game_two').val();
var game_three = $('#game_three').val();
var game_four = $('#game_four').val();
var game_five = $('#game_five').val();
var game_six = $('#game_six').val();
var game_seven = $('#game_seven').val();
$.ajax({
type: "POST",
url: "mlb_alcs_edit.php",
data: "game_one=" game_one "amp; game_two=" game_two "amp; game_three=" game_three "amp; game_four=" game_four "amp; game_five=" game_five "amp; game_six=" game_six "amp; game_seven=" game_seven,
success: function()
{
alert(game_six);
$('#bracket').load('mlb_alcs_changed.php?action=saved');
}
});
return false;
});
Есть предложения?
Спасибо,
Копье
Комментарии:
1. создайте консоль. войдите в систему данных перед отправкой, это из-за того, что некоторые символы перепутались с amp; или около того
2. вот предложение, посмотрите на $.serialize, чтобы упростить свой код: api.jquery.com/serialize … также, если вы имеете дело с флажками, проверьте, действительно ли передано непроверенное значение (например, ключ существует в PHP $ _POST[])
3. Спасибо. однако они не относятся к типу входных данных checkbox. это текстовые входные данные
4. как оказалось, проблема не в jquery. Это sql. Но запрос, похоже, совсем не неточный.
Ответ №1:
Если одно из значений содержит специальный символ URL, то это может привести к разрыву строки запроса. Вы должны URL-кодировать эти значения, прежде чем передавать их в строку запроса, вот так:
var game_one = encodeURIComponent($('#game_one').val());
Также удалите пробелы перед амперсандами:
"amp; game_two=" game_two
должно быть "amp;game_two=" game_two
В качестве альтернативы, вы можете позволить jQuery обрабатывать сериализацию ваших данных POST в пары ключ / значение, передавая объект вместо строки:
var gameData =
{
game_one = $('#game_one').val(),
game_two = $('#game_two').val(),
game_three = $('#game_three').val(),
game_four = $('#game_four').val(),
game_five = $('#game_five').val(),
game_six = $('#game_six').val(),
game_seven = $('#game_seven').val()
}
$.ajax({
type: "POST",
url: "mlb_alcs_edit.php",
data: gameData,
success: function() { ... }
});