2009-05-11 43 views
103

Tôi có một số mã như thế này,Thay đổi URL và chuyển hướng sử dụng jQuery

<form id="abc"> 
    <input type="text" id="txt" /> 
</form> 

và bây giờ tôi muốn chuyển hướng như thế này,

var temp = $("#txt").val(); 
url = "http:abc.com/" + temp; 
window.location.replace(url); 
or 
window.location(url); 

Liệu có cách nào trong jQuery để giải quyết này? Nó vẫn cho phép tôi có url = http://abc.com.

+0

Thank rất nhiều tất cả các bạn! Bây giờ tôi vẫn không biết sự khác biệt giữa window.location và window.location.replace. Trong ví dụ của tôi, tôi chỉ cần đăng url vào trang của mình như sau: http://abc.com/abc để lấy abc để tìm kiếm trong cơ sở dữ liệu của tôi với abc là những gì người dùng nhập vào đặt và nhấn enter hoặc nút nhưng họ luôn return http://abc.com?name=abc vì vậy tôi nghĩ rằng tôi có thể kích hoạt trong sự kiện gửi để chuyển hướng và thay đổi url của tôi thành những gì tôi muốn nhưng họ vẫn không làm gì cả. Đó là tất cả, bằng cách cảm ơn bạn một lần nữa! – gacon

+3

Tôi đã giải thích sự khác biệt giữa window.location và window.location.replace tại đây: http://stackoverflow.com/questions/846954/change-url-and-redirect-in-jquery/847130#847130 –

Trả lời

38

cho bạn biết sự thật, tôi vẫn không có được những gì bạn cần, nhưng

window.location(url); 

nên

window.location = url; 

một tìm kiếm trên window.location tham chiếu sẽ nói với bạn rằng.

16

jQuery không có tùy chọn này và cũng không có tùy chọn. Đây là javascript hoàn toàn hợp lệ và không có lý do gì để jQuery cung cấp các hàm wrapper cho việc này.

jQuery chỉ là một thư viện ở trên cùng của javascript, ngay cả khi bạn sử dụng jQuery, bạn vẫn có thể sử dụng javascript bình thường.

Btw window.location không phải là một chức năng nhưng một tài sản mà bạn nên đặt như thế này:

window.location = url; 
+0

bỏ phiếu để xác nhận quyền sở hữu jQuery không có phương pháp cho điều này (mặc dù nó không cần thiết quá mức cần thiết và không nên được khuyến nghị) $ jq (cửa sổ) .attr ("location", "http://yourdomain.com"); hoặc $ (vị trí) .attr ('href', url); – rob

+6

Được thăng hạng để hoàn tác thao tác đó. Phản ứng của Pim có thể dễ dàng đọc là "không có phương pháp cụ thể trong jQuery cho điều này." Để downvote về ngữ nghĩa từ vựng là một lạm dụng của đặc quyền đó. –

297

Như đã đề cập trong câu trả lời khác, bạn không cần jQuery để làm điều này; bạn chỉ có thể sử dụng các thuộc tính tiêu chuẩn.

Tuy nhiên, có vẻ như bạn dường như không biết sự khác biệt giữa window.location.replace(url)window.location = url.

  1. window.location.replace(url) thay thế vị trí hiện tại trong thanh địa chỉ bằng thanh địa chỉ mới. Trang đang gọi chức năng sẽ không được đưa vào lịch sử trình duyệt. Do đó, trên vị trí mới, việc nhấp vào nút quay lại trong trình duyệt của bạn sẽ khiến bạn quay lại trang bạn đang xem trước khi bạn truy cập tài liệu chứa JavaScript chuyển hướng.
  2. window.location = url chuyển hướng đến vị trí mới. Trên trang mới này, nút quay lại trong trình duyệt của bạn sẽ trỏ đến trang gốc chứa JavaScript chuyển hướng.

Tất nhiên, cả hai trường hợp này đều có trường hợp sử dụng, nhưng có vẻ như trong trường hợp này, bạn nên tuân theo trường hợp sau.

PS: Bạn có thể quên hai dấu gạch chéo sau http: trên dòng 2 của JavaScript:

url = "http://abc.com/" + temp; 
+34

+1 cho lời giải thích của 'window.location.replace' –

+5

Nhưng để được rất chính xác, bạn nên đặt window.location.href thay vì window.location. Trong khi cả hai làm việc ngày nay sau này là một đối tượng (và tất nhiên không được hỗ trợ để gán một chuỗi để trong một phiên bản IE cổ ...) – Victor

+1

@Victor [cần dẫn nguồn] –

2

Hãy thử này ...

$("#abc").attr("action", "/yourapp/" + temp).submit(); 

gì nó có nghĩa là:

Tìm một hình thức với id "abc", hãy đổi số attribute có tên là "hành động" và sau đó gửi ...

Điều này làm việc cho tôi ... !!!

+0

Tôi sẽ thử sau! – gacon

+0

lol, đó là một số S buồn cười! Tôi thích ý tưởng này. Các điểm để sáng tạo! –

5
var temp="/yourapp/"; 
$(location).attr('href','http://abcd.com'+temp); 

Hãy thử này ... sử dụng như một sự thay thế

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