2012-10-23 158 views
0

我正在創建一個簡單的表單輸入演示。值從表單存儲在變量中,然後將它們放入json對象中,並通過ajax發送。通過ajax發送json對象

我的Json對象驗證,但我如何在$ .ajax的數據字段中引用它?我的代碼:

$(document).ready(function() { 
    $('.submitForm').on('click',function(event){ 
event.preventDefault(); 

    var firstName = $('#firstName').val(); 
    var lastName = $('#lastName').val(); 
    var phone  = $('#phoneNumber').val(); 
    var address = $('#address').val(); 
    var $out  = $("#formResults"); 

    $out.append("<p>" + firstName +' '+ lastName + "</p>" +          
       "<p>" + $('#phoneNumber').val() + "</p>" + 

        //json object 
        { 
         "firstName" : "firstName", 
         "lastName" : "lastName", 
         "phoneNumber" : "phoneNumber", 
         "address" : "address" 
         } 


         $.ajax({ 
         url: 'http://localhost/xyz/markup/', 
         method: 'GET', 
         data: jsonObject 
         error: alert("error") 
         complete: alert ("complete") 
               }); 
            });    
            }); 

的感謝!

+0

你有一些逗號丟失:錯誤:警告(「錯誤」), 完成:警告(「完成」)... – ChuckE

回答

4
"firstName" : "firstName", 

應該是

"firstName" : firstName, 
       ^---  ^---note lack of quotes 

和類似的其他3個字段。

你正在試圖做string:string,而不是string:variable

此外,代碼中沒有任何地方是jsonObject實際定義的。

主要注意事項:請勿自行構建JSON文本。這是非常危險的。一個單一的語法錯誤(通常錯位的引號)和整個json對象變得無效。建立一個普通的JS數據結構會更好,然後使用提供的json編碼工具來生成json字符串。

+0

如果我刪除引號也不會在jsonlint驗證。怎麼來的? – Anthony

+1

,因爲你生產的東西像「firstname」:John Doe',這是無效的json。就像我說的,不要試圖建立自己的json字符串。除非你確切地知道你在做什麼以及json的語法要求是什麼,否則你最終會遇到麻煩。讓JSON對象爲你做編碼/綁定。 –