2011-09-15 44 views
53

Tôi đang cố gắng đăng các giá trị biểu mẫu qua AJAX vào một tệp php. Làm cách nào để thu thập các giá trị biểu mẫu của tôi để gửi bên trong tham số "dữ liệu"?jQuery - Nhận các giá trị biểu mẫu cho ajax POST

$.ajax({ 
     type: "POST", 
     data: "submit=1&username="+username+"&email="+email+"&password="+password+"&passconf="+passconf, 
     url: "http://rt.ja.com/includes/register.php", 
     success: function(data) 
     { 
      //alert(data); 
      $('#userError').html(data); 
      $("#userError").html(userChar); 
      $("#userError").html(userTaken); 
     } 
    }); 

HTML:

<div id="border"> 
    <form action="/" id="registerSubmit"> 
    <div id="userError"></div> 
     Username: <input type="text" name="username" id="username" size="10"/><br> 
     <div id="emailError" ></div> 
     Email: <input type="text" name="email" size="10" id="email"/><br> 
     <div id="passError" ></div> 
     Password: <input type="password" name="password" size="10" id="password"/><br> 
     <div id="passConfError" ></div> 
     Confirm Password: <input type="password" name="passconf" size="10" id="passconf"/><br> 
     <input type="submit" name="submit" value="Register" /> 
    </form> 
</div> 
+1

Bạn nên gửi nó ở định dạng json '{" key ": value," key ": value}'. Những gì tôi sẽ đề nghị là tạo một đối tượng javascript với các tham số của bạn như là các thuộc tính của nó và sử dụng 'JSON.stringify (object)' để chuyển đổi đối tượng thành định dạng json. –

+0

@SangSuantak, tại sao bạn lại bận tâm với các chuyển đổi JSON khi bạn không cần chúng với tập hợp các cặp tên/giá trị bình thường ?! –

Trả lời

111

Sử dụng phương pháp serialize:

$.ajax({ 
    ... 
    data: $("#registerSubmit").serialize(), 
    ... 
}) 

Documents: serialize()

+0

Làm cách nào để bạn nhận được dữ liệu biểu mẫu và biến được đặt theo cách thủ công? giống như dữ liệu: $ ("# registerSubmit"). serialize() + '& myvar = 123'? điều đó dường như không hoạt động theo cách tôi có nó – Dss

+3

Tôi không thấy điều đó sẽ không hoạt động. Nếu dữ liệu bạn muốn chắp thêm phức tạp hơn, bạn có thể sử dụng '$ .param'. '$ (" form "). serialize() +" & "+ $ .param ({myvar: 123})'. – Robin

+5

Ngoài ra còn có một phương pháp khác: sử dụng 'serializeArray'. 'data = $ (" form "). serializeArray(); data.push ({name: "myvar", giá trị: 123}); $ .param (dữ liệu); ' – Robin

5

bạn có thể sử dụng chức năng val để thu thập dữ liệu từ đầu vào:

jQuery("#myInput1").val(); 

http://api.jquery.com/val/

+0

Cảm ơn! Điều đó đã làm điều đó. – user547794

+4

Vâng, nhưng bạn không cần phải làm điều đó theo cách thủ công cho mọi trường. Đó là thứ serialize cho. Nếu bạn thêm một trường thì sao? Bạn không muốn phải thay đổi js của bạn. – Robin

0

thử như mã này.

$.ajax({ 
     type: "POST", 
     url: "http://rt.ja.com/includes/register.php?submit=1", 
     data: "username="+username+"&email="+email+"&password="+password+"&passconf="+passconf, 

     success: function(html) 
     { 
      //alert(html); 
      $('#userError').html(html); 
      $("#userError").html(userChar); 
      $("#userError").html(userTaken); 
     } 
    }); 

tôi nghĩ rằng điều này sẽ làm việc chắc chắn ..

bạn cũng có thể sử dụng chức năng .serialize() cho việc gửi dữ liệu thông qua jquery Ajax ..

i.e: data : $("#registerSubmit").serialize() 

Cảm ơn.

0
var username = $('#username').val(); 
var email= $('#email').val(); 
var password= $('#password').val(); 
2
var data={ 
userName: $('#userName').val(), 
email: $('#email').val(), 
//add other properties similarly 
} 

$.ajax({ 
     type: "POST", 
     url: "http://rt.ja.com/includes/register.php?submit=1", 
     data: data 

     success: function(html) 
     { 
      //alert(html); 
      $('#userError').html(html); 
      $("#userError").html(userChar); 
      $("#userError").html(userTaken); 
     } 
    }); 

Bạn không cần phải bận tâm về bất cứ điều gì khác. jquery sẽ xử lý tuần tự hóa vv, bạn cũng có thể nối thêm tham số chuỗi truy vấn submit submit = 1 vào đối tượng json dữ liệu.

7
$("#registerSubmit").serialize() // returns all the data in your form 
$.ajax({ 
    type: "POST", 
    url: 'your url', 
    data: $("#registerSubmit").serialize(), 
    success: function() { 
      //success message mybe... 
    } 
}); 
Các vấn đề liên quan