Существует ли ограничение на объем данных, которые могут быть отправлены на сервер с использованием функции jquery AJAX?

#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() { ... }
});