2012-01-27 5 views
8

Vì vậy, tôi đang cố gửi một trang tới chính nó trong khi giữ lại chuỗi truy vấn hiện tại của trang.Gửi biểu mẫu bằng chuỗi truy vấn? Key = val đã có trong thuộc tính hành động bỏ qua chuỗi truy vấn

Vì vậy, trang là sb.local/sb/cat.php?brandcode=JM&t=cat_items Tôi kéo chuỗi truy vấn và dán nó trở lại vào biểu mẫu html để giữ nguyên các tham số. Đây là dạng kết quả:

<form id="brand-select" method="get" action="?brandcode=JM&t=cat_items" name="brand-select"> 
Brand: 
<select id="brandcode" style="width:207px" tabindex="3" name="brandcode" required=""> 
<option value=""></option> 
<option class="brand-option" value="AX" data-brandid="110"> Aetrex </option> 
<option class="brand-option" value="AL" data-brandid="12"> Alden </option> 
<option class="brand-option" value="ETC" data-brandid="11"> Etc </option> 
</select> 
<input type="submit" value="go"> 
</form> 

Khi tôi gửi biểu mẫu bằng cách chọn menu thả xuống cho Aetrex (giá trị AX), tuy nhiên, nó đi đến một url của:

sb.local/sb/cat.php?brandcode=AX nói cách khác, nó cắt ra "t = cat_items" có trong hành động. Nó cũng cắt bỏ "brandcode = JM" nhưng tôi gần như mong đợi rằng vì chúng trùng lặp.

Đó không phải là những gì tôi mong đợi, tôi mong rằng nếu có chuỗi truy vấn trong thuộc tính hành động, nó sẽ nối thêm các giá trị biểu mẫu vào chuỗi truy vấn đó (ví dụ: sb.local/sb/cat.php?brandcode=JM&t=cat_items&brandcode=AX. . yếu tố mà ở dạng

là thuộc tính hình thức hành động không thể sử dụng để lưu trữ các tham số truy vấn, chỉ cơ bản chi tiết url

chỉnh sửa: lưu ý rằng tôi có thể làm việc này bằng cách phân tích mỗi tham số và sau đó đặt mỗi tham số vào trường ẩn của riêng nó theo cách thủ công, ngoại trừ bất kỳ thông số nào mà tôi muốn cho phép thay đổi, tôi chỉ hy vọng rằng có một số loại cách đơn giản hơn.
Tôi đã thử nghiệm bằng chuỗi truy vấn không xung đột và đã được thay thế hoàn toàn ngay cả khi không có xung đột (trong Firefox), do đó dựa vào đó có vẻ như chuỗi truy vấn là vô dụng trong thuộc tính hành động của biểu mẫu nhận? Hay tôi đang thiếu cái gì đó.

+0

Có thể trùng lặp [gửi biểu mẫu GET với thông số chuỗi truy vấn và thông số ẩn biến mất] (http://stackoverflow.com/questions/1116019/submitting-a-get-form-with-query-string-params-and -hidden-params-biến mất) – isherwood

Trả lời

9

Tôi biết đây là một câu hỏi cũ, nhưng giải pháp thực sự khá đơn giản (và gọn gàng!).

Tất cả những gì bạn phải làm là gửi chuỗi truy vấn có các trường nhập ẩn theo định dạng name="key"value="value".

brandcode = JM & t = cat_items sẽ "dịch" thành:?

<input type="hidden" name="brandcode" value="JM" /> 
<input type="hidden" name="t" value="cat_items" /> 

Tháo gỡ hoàn toàn các chuỗi truy vấn từ action của bạn.

+0

Như tôi đã đề cập ở dưới cùng của câu hỏi, tôi biết giải pháp thủ công đó, nhưng nó yêu cầu phân tích cú pháp tất cả thông số url và giá trị của chúng, sau đó lọc ra các thông số cụ thể thay đổi [đây là nơi gặp khó khăn] và sau đó lặp lại chúng trong biểu mẫu để đưa chúng vào đầu vào bị ẩn. – Kzqai

+0

Vâng, đây là cách tôi sẽ làm điều này ngày hôm nay, hoặc nếu không thông qua sên url khá nếu tôi thực sự muốn truy cập ổn định. – Kzqai

+0

Trên thực tế, điều này không phải là rất khó để tạo ra. Chỉ cần lặp qua $ _GET (cho php) hoặc Request.QueryString (cho VBScript/VB.Net) và xuất tất cả các khóa và giá trị dưới dạng đầu vào bị ẩn. –

1

Bạn có thể sử dụng phương thức "POST" thay vì phương thức "GET" để gửi biểu mẫu, nếu phương pháp không quan trọng.

+0

Hmmm, lưu ý. Trong trường hợp này, tôi đã cố gắng sử dụng để có độ trong suốt tối đa (mọi thay đổi nhận được thay đổi url tương ứng), nhưng có lẽ ngắt kết nối này là vì tôi phần nào lạm dụng các phương pháp thông thường của việc sử dụng một biểu mẫu. – Kzqai