2014-06-02 7 views
0

Я пытаюсь изменить кнопку «ADD» (в div) на некоторый текст/img, как только будет нажата кнопка. И после обработки запроса ajax в блоке успеха я хочу, чтобы div вернул кнопку. Я вижу, что запрос ajax сам по себе не обрабатывается. Может кто-нибудь объяснить, в чем моя ошибка.Изменение содержимого html в div до и после запроса ajax

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

JS скрипт

var ajax_load = "Please wait..."; jQuery(document).ready(function($) { $("#add_button").click(function(event){ var st = $("#add_div").html(); $("#add_div").html(ajax_load); $("#sform").validate({ errorClass: "error", submitHandler: function (form) { alert('inside submit'); $.ajax({ type: "GET", url: 'form.cgi', data: $("#sform").serialize(), success: function (msg) { alert('msg'); $("#add_div").html(st); $("#sform")[0].reset(); } }); } }); }); });

И HTML кусок

<form id=sform>LABEL <input id=field1 type=text> <div id="add_div"> <input type="button" value="ADD" id="add_button"> </div> </form>

У меня есть jquery.validate.min.js включен сценарий.

+1

У вас есть зависимости в вашей скрипке, которые не работают, поэтому мы не можем ее протестировать. Но первый шаг - вам не нужно вызывать 'load' на' $ ("# addeditecode_submit") '. Вы уже выполнили вызов Ajax, и загрузка попытается сделать еще один (и сбой, потому что у вас нет параметров). Просто выполните '$ (" # addeditecode_submit "). Html (...)'. – gwcoffey

+0

Зачем использовать кнопку click вместо $ ('form'). Submit (function() {}); Это позволит пользователю использовать ключ ввода. Измените текст в onclick, измените его на ajax.always() –

+0

Нет ссылки на 'validate.js'? –

ответ

0

Ваш jsfiddle нуждается в библиотеке jQuery, которая отсутствовала. Если вы выполняете зависимости jQuery, у вас не возникнет проблем с созданием запроса AJAX.

Подойдя к вашему второму вопросу, вы можете использовать свойство beforeSend для jquery.ajax, чтобы делать все, что вы желаете. Прочитайте документацию.

+0

Я добавил свойство beforeSend в свой исходный код (не в jsfiddle), где я добавил jquery.validate.min.js. Он все еще не делает запрос ajax работать ... – R27

+0

Трудно сказать, почему запрос AJAX не проходит, если вы его не осмотрите. Я взял на себя труд создать еще одну скрипку, чтобы объяснить, почему все не работает. http://jsfiddle.net/Pkcgh/ Если вы посмотрите на код, код-код внутри метода .validate никогда не будет выполнен, потому что все, что этот метод .validate пытается сделать, он не работает. К сожалению, я не знаю много о плагине проверки jQuery, чтобы помочь вам решить проблему. –

+1

Спасибо. Я только что внес некоторые изменения и сохранил строку submitHandler как есть, и, наконец, она работала только из-за beforeSend(). Я все еще удивляюсь, почему запрос ajax не обрабатывался, когда '$ (" # addeditecode_submit "). Html (ajax_load);' был помещен вне $ .ajax(). Но большое спасибо. – R27

Смежные вопросы