Отправка формы AJAX в jQuery

У меня проблема при попытке отправить некоторые данные с $.post(jquery ajax function) - это не работает. Мой код здесь:

$.post(
    $(this).attr("action"),
    {     
        task: "add",
        $(this).serialize()
    },
    function(data) {
        if (data.length > 0 ) {
            alert("Success");
        }
    }
);

Я предполагаю, что проблема связана с отправляемыми данными, на самом деле у меня есть одна полная страница AJAX с большим количеством операторов регистра переключателей, поэтому мне нужно указать task переменная каждый раз, когда я отправляю и запрос AJAX.

Если есть лучшие решения, как решить эту проблему, не стесняйтесь поделиться своими мыслями. Спасибо.

3 ответа

Я думаю, это должно было быть как ниже.

$.post(
    $(this).attr("action"),
    {task:"add",'data': $(this).serialize()},
    function(data){
        if(data.length > 0 ){
            alert("Success");
        }
    }
);

Проблема с этой частью:

{     
    task: "add",
    $(this).serialize()
}

Это приведет к синтаксической ошибке, потому что это недопустимый литерал объекта. призвание $(this).serialize() возвращает строку, которая является строкой запроса для запроса. Что вы могли бы сделать это вместо этого:

$.post($(this).attr('action'), $(this).serialize() + '&task=add', function(data) {...});

Проблема, вероятно, в том, что часть

{task:"add",$(this).serialize()}

недопустим, так как метка требуется после запятой.

{task: "add", data: $(this).serialize()}

по крайней мере, приведет к правильному объекту, но не тот, который имеет смысл отправлять на сервер.

Я думаю, что самым простым решением было бы что-то вроде

$.post($(this).attr("action"),
$(this).serialize() + '&task=add',
function(data){
 if(data.length > 0 ){
   alert("Success");
}
});
Другие вопросы по тегам