2013-07-23 38 views
68

Có cách nào để sử dụng javascript và JQuery để thêm một số trường bổ sung được gửi từ biểu mẫu HTTP bằng POST không?Làm cách nào để thêm các trường bổ sung để tạo trước khi gửi?

Ý tôi là:

<form action="somewhere" method="POST" id="form"> 
    <input type="submit" name="submit" value="Send" /> 
</form> 

<script type="text/javascript"> 

    $("#form").submit(function(eventObj) 
     { 
      // I want to add a field "field" with value "value" here 
      // to the POST data 

      return true; 
     } 
</script> 
+2

bản sao có thể có của [jQuery - thêm thông số bổ sung khi gửi (KHÔNG ajax)] (http://stackoverflow.com/questions/2530635/jquery-add-additional-parameters-on-submit-not-ajax) – Marijn

Trả lời

99

Yes.You có thể thử với một số params ẩn.

$("#form").submit(function(eventObj) { 
     $('<input />').attr('type', 'hidden') 
      .attr('name', "something") 
      .attr('value', "something") 
      .appendTo('#form'); 
     return true; 
    }); 
+18

'. appendTo (this) 'có lẽ sẽ tốt hơn. – jcuenod

+1

@jcuenod ban đầu 'appendTo ('# form')' là tốt hơn nhiều, bởi vì cách tiếp cận như vậy cho phép gửi một hình thức với các giá trị từ này. – Andremoniy

+3

Bạn sẽ phải thêm một số logic bổ sung để tránh tích lũy các đầu vào này với mỗi lần gửi. – amos

30

Hãy thử điều này:

$('#form').submit(function(eventObj) { 
    $(this).append('<input type="hidden" name="field_name" value="value" /> '); 
    return true; 
}); 
+0

Tôi cần thêm trường tệp động. Tôi đã thử có loại = tập tin, và giá trị cũng như các tập tin (Tôi đang sử dụng WebKitDirectory, vì vậy tôi thực sự nhận được các đối tượng tập tin), tuy nhiên nó dường như không bao giờ vượt qua nó. Các văn bản đầu vào luôn luôn được thông qua mặc dù. Hãy giúp tôi ra! –

+0

Câu trả lời ưa thích của tôi do sử dụng 'this' thay vì thừa' # form' – rinogo

8

Bạn có thể thêm một hiddeninput với bất cứ giá trị mà bạn cần gửi:

$('#form').submit(function(eventObj) { 
    $(this).append('<input type="hidden" name="someName" value="someValue">'); 
    return true; 
}); 
6
$('#form').append('<input type="text" value="'+yourValue+'" />'); 
-1

này hoạt động:

var form = $(this).closest('form'); 

form = form.serializeArray(); 

form = form.concat([ 
    {name: "customer_id", value: window.username}, 
    {name: "post_action", value: "Update Information"} 
]); 

$.post('/change-user-details', form, function(d) { 
    if (d.error) { 
     alert("There was a problem updating your user details") 
    } 
}); 
+0

Vâng, nhưng không có chuyển hướng đến trang kết quả. – omikron

+1

điều này sẽ hoạt động: '$ ('body'). Chắp thêm (biểu mẫu); $ (mẫu) .submit(); ' –

Các vấn đề liên quan