2013-11-26 81 views
3

作爲標題說我通過ajax發送一些文章數據。但我不斷收到錯誤,任何人都可以看看代碼並解釋爲什麼我的ajax調用會一直失敗?發送表單數據JSON格式通過Ajax使用JQuery

submitForm(jQuery('#priceCalc'), {name: 'thingdoto', value: "true"}); 

function submitForm(form, data) { 
     var postData = form.serializeArray(), 
      formURL = form.attr("action"); 

     postData.push(data); 
     console.log(postData); 
     jQuery.ajax({ 
       url : formURL, 
       type: 'POST', 
       dataType : "json", 
       data: postData, 
       success:function(data) 
       { 
         jQuery('#priceTotal').html(data); 
       }, 
       error: function() 
       { 
         jQuery('#priceTotal').html('error'); 
       } 
     }); 
} 

編輯:ajax調用返回錯誤,所以它只是沒有成功。不知道爲什麼。

+0

它的button標籤更改爲a標籤你知道,有必要提一下這些錯誤是什麼。 – alex

+0

哦,嘿!對不起,它只是返回錯誤,在ajax調用,所以我只是字符串「錯誤」。該功能不成功。 – Spittal

+0

是返回'2xx'的URL命中嗎? – alex

回答

11

您正在將數據作爲數組發送,而不是JSON字符串。

你想要做這樣的事情。

$("form#ID").submit(function(e){ 

    e.preventDefault(); 

    var data = {} 
    var Form = this; 

    //Gathering the Data 
    //and removing undefined keys(buttons) 
    $.each(this.elements, function(i, v){ 
      var input = $(v); 
     data[input.attr("name")] = input.val(); 
     delete data["undefined"]; 
    }); 

    //Form Validation goes here.... 

    //Save Form Data........ 
    $.ajax({ 
     cache: false, 
     url : ?, 
     type: "POST", 
     dataType : "json", 
     data : JSON.stringify(data), 
     context : Form, 
     success : function(callback){ 
      //Where $(this) => context == FORM 
      console.log(JSON.parse(callback)); 
      $(this).html("Success!"); 
     }, 
     error : function(){ 
      $(this).html("Error!"); 
     } 
    }); 
+1

此邏輯「收集數據」適用於文本字段,但不適用於複選框。無論複選框是否被選中,它總是傳送複選框元素的「值」。 –

0

老問題,但我只是碰到了這樣的情況:

jquery ajax returns success when directly executed, but returns error when attached to button, even though server response is 200 OK

,並發現問題(對我來說)是調用從button AJAX技術form內發送JSON似乎會導致JQuery誤解服務器響應 - 並始終認爲它是一個錯誤。我的解決辦法是把form更改爲div或(使用引導程序來呈現的按鈕)

這個工作

<div> 
    <button></button> 
</div> 

<form> 
    <a></a> 
</form> 
相關問題