Показать сообщение отдельно
  #1 (permalink)  
Старый 10.09.2010, 12:39
Новичок на форуме
Отправить личное сообщение для CrashX Посмотреть профиль Найти все сообщения от CrashX
 
Регистрация: 10.09.2010
Сообщений: 2

jQuery Form и XMLHttpRequest
использую
jQuery v1.4.2
jQuery Tools 1.2.4 Overlay
Form v2.47

с помощью оверлей создаю окнок, туза загружаю данные,
при запросе к пхп скрипту заголовок $_SERVER['HTTP_X_REQUESTED_WITH'] проставляется нормально

при отправке формы данные уходят, но заголовок не ставится, и поэтому отдается все страница, включая шапку и тп
----
решение одно есть это отдельный обработчик для ajax
но это не выход,
---
я так понимаю не у меня одного подобная проблема возникала
может кто что подскажет

---
отладчиком проверял ответ не приходит
увы, а в первом случае при запросе страницы заголовок есть...
---
я использую не iframe
вся обработка в диве

<script type="text/javascript">
$(document).ready(function(){

	// готовим объект
	var options = {
    target: "#modalbox",
	  url: "{action}",
    beforeSubmit: showRequest, // функция, вызываемая перед передачей
    success: showResponse, // функция, вызываемая при получении ответа
    //type:  "post",       // get or post, override for forms method attribute
    //dataType: "html",        // xml, script, or json (expected server response type)
    timeout:   15000,
	};

// привязываем событие submit к форме
  $("#userform").submit(function() {
    $(this).ajaxSubmit(options);
    // !!! Важно !!!
    // всегда возвращаем false, чтобы предупредить стандартные
    // действия браузера (переход на страницу form.php)
    return false;
  });
});
  // bind form using ajaxForm
    //$("#userform").ajaxForm(options);
//});
function showRequest(formData, jqForm, options) {
    // formData - массив; здесь используется $.param чтобы преобразовать его в строку для вывода в alert(),
    // (только в демонстрационных целях), но в самом плагине jQuery Form это совершается автоматически.
    var queryString = $.param(formData);
    // jqForm это jQuery объект, содержащий элементы формы.
    // Для доступа к элементам формы используйте
    // var formElement = jqForm[0];
    alert(\'Вот что мы передаем: \n\n\' + queryString);
    // здесь можно вернуть false чтобы запретить отправку формы;
    // любое отличное от fals значение разрешит отправку формы.
    return true;
}
 // вызов после получения ответа
function showResponse3(data) {
    // data is the json object returned from the server
    alert(data.message);
}
function showResponse2(responseXML) {
    // responseXML is the XML document returned by the server; we use 
    // jQuery to extract the content of the message node from the XML doc 
    var message = $(\'message\', responseXML).text();
    alert(message); 
}

function showResponse(responseText, statusText)  {
    // для обычного html ответа, первый аргумент - свойство responseText
    // объекта XMLHttpRequest

    // если применяется метод ajaxSubmit (или ajaxForm) с использованием опции dataType
    // установленной в xml, первый аргумент - свойство responseXML
    // объекта XMLHttpRequest

    // если применяется метод ajaxSubmit (или ajaxForm) с использованием опции dataType
    // установленной в json, первый аргумент - объек json, возвращенный сервером.

    alert(\'Статус ответа сервера: \' + statusText + \'\n\nТекст ответа сервера: \n\' + responseText +
        \'\n\nЦелевой элемент div обновиться этим текстом.\');
}
</script>

Последний раз редактировалось CrashX, 10.09.2010 в 12:42.
Ответить с цитированием