2015-07-10 3 views
3

У меня есть форма на моей странице, которую я не хочу отправлять. Вот пример того, что я пытаюсь сделать в основном. Когда я нажимаю кнопку, я хочу отправить запрос ajax, но не отправив форму. Это пример формат функция, которая будет выполняться, когда моя кнопка нажата:Как отправить данные формы с помощью jquery ajax без отправки формы?

function clicked() 
{ 
    try { 
      var url = "test.php?t1=1&t2=2" 
      var postData = $("#myForm").serializeArray(); 
      $.ajax(
      { 
       url : url, 
       beforeSend: function (request) 
       { 
        request.setRequestHeader('Content-Type', 'text/html; charset=utf-8'); 
       }, 
       type: "POST", 
       data : postData, 
       contentType: false, 
       processData: false, 
       success:function(data, status, xhr) 
       { 
        if(status == "success") 
        { 
         alert(data); 
         // Do something on page 
        } 
        else 
        { 
         // Do something on page 
        } 
       }, 
      }); 
     } 
    catch (e) 
    { 
     alert("Error Adding POI:\n" + e); 
    } 
} 

Когда я отключить отправки формы с помощью функции preventDefault, форма не будет представлена. Однако форма просто отправляет запрос на отправку ajax на мой url «test.php? T1 = 1 & t2 = 2» без каких-либо входных значений моей формы. Без предупрежденияDefault форма отправляется и перемещается в сторону от страницы. Запрос ajax не отправляется. Есть ли способ отправить данные формы в URL-адрес «test.php? T1 = 1 & t2 = 2» с запросом ajax без отправки формы?

Заранее спасибо. Любая помощь приветствуется.

+0

Serialize входные значения в строке Json, и отправить его по запросу на JSon –

+0

Вместо того, чтобы сделать форму (которую вы, кажется, не хотят использовать), то почему бы вам не просто создать DIV, содержащий все ваши входы с кнопкой в ​​конце. Затем в JS вы связываете кнопку с запросом ajax. – tektiv

+0

Спасибо tektiv. Это будет работать, но есть ли простой способ сериализации значений входов? Используется ли метод serialize для div, в котором есть входы? –

ответ

3

TRY:

$('input [type="submit"]').on('click',function(e){ 
    e.preventDefault(); 
    var url = "test.php?t1=1&t2=2" 
       var postData = $('this').serialize(); 
       $.ajax(
       { 
        url : url, 
        beforeSend: function (request) 
        { 
         request.setRequestHeader('Content-Type', 'text/html; charset=utf-8'); 
        }, 
        type: "POST", 
        data : postData, 
        success:function(data, status, xhr) 
        { 
         if(status == "success") 
         { 
          alert(data); 
          // Do something on page 
         } 
         else 
         { 
          // Do something on page 
         } 
        }, 
       }); 

    }) 
+0

Спасибо за ваш комментарий madalin, но, к сожалению, он все еще не работает. Он отправляет запрос ajax для URL-адреса, но не включает данные моей формы. –

+0

для чего используются t1 и t2? и какая у вас ошибка в вашей консоли? – madalinivascu

+0

Это просто переменные, которые я хочу отправить. –

0

Ниже грязного хака может работать, когда я выкопать некоторые детали для вас. Пожалуйста, также продолжайте использовать preventDefault, чтобы предотвратить отправку формы.

//Change 
var url = "test.php?t1=1&t2=2" 
var postData = $("#myForm").serializeArray(); 

//To 
var url = "test.php" 
var postData = "t1=1&t2=2&" + $("#myForm").serialize(); 
+0

Спасибо за ваш комментарий lshettyl. Я попробовал, но он отправляет только t1 и t2. Он не отправляет данные формы. –

+0

Вы пытались предупредить 'postData' и посмотреть, что он выводит? Кроме того, обновите свой вопрос с помощью формы HTML. – lshettyl

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