JQuery kullanarak URL'yi değiştirin ve yeniden yönlendirin


132

Bunun gibi bir kodum var

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

ve şimdi bunun gibi yeniden yönlendirmek istiyorum

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

JQuery'de bunu çözmek için zaten var mı? Hala sahip olmama izin veriyor url = http://example.com.


Hepinize çok teşekkür ederim! Şimdi hala window.location ile window.location.replace arasındaki farkın ne olduğunu bilmiyorum. Örneğimde , sayfama şu şekilde url göndermem gerekiyor: abc.com/abc veritabanımda abc ile arama yapmak için, kullanıcının yazdığı şeydir ve enter veya düğmesine basın, ancak her zaman abc.com döndürür. ? name = abc bu yüzden, url'mi istediğime yönlendirmek ve değiştirmek için gönder olayını tetikleyebileceğimi düşünüyorum ama yine de hiçbir şey yapmıyorlar. Hepsi bu, bu arada tekrar teşekkür ederim!
gacon

Yanıtlar:


343

Diğer yanıtlarda da belirtildiği gibi, bunu yapmak için jQuery'ye ihtiyacınız yok; sadece standart özellikleri kullanabilirsiniz.

Ancak, window.location.replace(url)ve arasındaki farkı bilmiyor gibisiniz window.location = url.

  1. window.location.replace(url)adres çubuğundaki mevcut konumu yenisiyle değiştirir. İşlevi çağıran sayfa, tarayıcı geçmişine dahil edilmeyecektir. Bu nedenle, yeni konumda, tarayıcınızdaki geri düğmesine tıklamak, yeniden yönlendiren JavaScript içeren belgeyi ziyaret etmeden önce görüntülemekte olduğunuz sayfaya geri dönmenizi sağlar.
  2. window.location = urlyeni konuma yönlendirir. Bu yeni sayfada, tarayıcınızdaki geri düğmesi, yönlendiren JavaScript'i içeren orijinal sayfayı işaret eder.

Tabii her ikisinin de kendi kullanım durumları var, ama bana öyle geliyor ki bu durumda ikincisine bağlı kalmalısınız.

Not: Muhtemelen http:JavaScript'inizin 2. satırından sonra iki eğik çizgiyi unutmuşsunuzdur :

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

5
Ancak çok doğru olmak gerekirse window.location yerine window.location.href ayarlamanız gerekir. Her ikisi de günümüzde çalışırken, ikincisi bir nesnedir (ve elbette eski bir IE sürümünde bir dizge atamak için desteklenmez ...)
Victor

1
@Victor [alıntı gerekli]
Mathias Bynens

1
@Victor Bu, bunun devreye girdiği herhangi bir eski IE sürümünü listelemiyor. @
Bobince'nin

Eksi 1. Yeterli değil jQuery
VarunAgw

41

sana doğruyu söylüyorum, hala ihtiyacın olanı alamıyorum ama

window.location(url);

olmalı

window.location = url;

window.location referansı üzerinde bir arama size bunu söyleyecektir.


18

jQuery'nin bunun için bir seçeneği yoktur ve olmamalıdır. Bu tamamen geçerli bir javascripttir ve jQuery'nin bunun için sarmalayıcı işlevler sağlamasına gerek yoktur.

jQuery sadece javascript’in üstünde bir kitaplıktır, jQuery kullanıyor olsanız bile normal javascript kullanabilirsiniz.

Btw window.location bir işlev değil, şu şekilde ayarlamanız gereken bir özelliktir:

window.location = url;

jQuery'nin bunun için bir metodu olmadığını iddia etmek için aşağı oylama (gereksiz aşırı öldürme olmasına ve önerilmemesine rağmen) $ jq (pencere) .attr ("konum", " etkialaniniz.com" ); veya $ (konum) .attr ('href', url);
soymak

9
Olumsuz oyu geri almak için oy verildi. Pim'in yanıtı, "jQuery'de bunun için özel bir yöntem yok" şeklinde kolayca okunabilir. Sözcüksel semantiğe olumsuz oy vermek, bu ayrıcalığın kötüye kullanılmasıdır.
Nigel Melek

Bu doğru "jQuery'de bunun için belirli bir yöntem yok" olduğu için oy verildi, neden $ jq (pencere) .attr ("konum", "etki alanınız. com "); window.location = url gibi bir şeye sahip olabileceğiniz zaman;
Rodolfo Abarca

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

Bunu deneyin ... alternatif olarak kullanılır


3

Bunu dene...

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

Ne demek:

id"Abc" içeren bir form bulun , attribute"eylem" adını değiştirip gönderin ...

Bu benim için çalışıyor ... !!!


1
lol, bu biraz komik S! Yine de fikri beğendim. Yaratıcı olmanın puanları!
Eric Bishard

-2

jquery olmadan daha basit yapabilirsin

location = "https://example.com/" + txt.value


Çalışmıyor ve nasıl olabileceğini göremiyorum. konum küresel değil. window.location is. düzenleme: Evet doğrulandı. En azından kromda çalışmıyor. Örneğinizi window.location olarak güncellemeyi düşünün
Shayne

Garip - benim chrome, firefox, safari çalışıyor - konum küresel bir özelliktir - örneğin, chrome konsoluna yazdığımda: location = 'https://google.com'sonra sayfayı değiştirir - diğer tarayıcılarda deniyor musunuz?
Kamil Kiełczewski

@Shayne yazarken thisve this.locationkonsolda - ne görüyorsun?
Kamil Kiełczewski

this.location yalnızca "this" pencereye atıfta bulunduğunda çalışır. Nadiren durum böyle olacak. Açıkça her zaman Örtükten daha iyidir, özellikle de kodunuz taşınabilir veya yeniden kullanılabilir olmadığında şaşırmak istemiyorsanız
Shayne

Evet haklısınız - ancak merak ediyorum: neden tarayıcınızda nesneye thisatıfta bulunmuyorsunuz window(ve yukarıdaki ön bilgi çalışmıyor)? (tarayıcıların genel bağlamında Windows nesnesine ayarlanmalıdır )
Kamil Kiełczewski
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.