jQuery를 사용하여 URL 변경 및 리디렉션


132

이런 코드가 있습니다.

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

이제는 다음과 같이 리디렉션하고 싶습니다.

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

어쨌든 jQuery 에이 문제를 해결할 수 있습니까? 그래도 내가 가질 수 있습니다 url = http://example.com.


모두 감사합니다! 이제는 여전히 window.location과 window.location.replace의 차이점을 모릅니다. 내 예제에서는 다음과 같이 url을 내 페이지에 게시해야합니다. abc.com/abc abc로 데이터베이스에서 abc를 검색하려면 사용자가 put을 입력하고 Enter 또는 버튼을 누르는 것이지만 항상 abc.com을 반환합니다. ? name = abc 그래서 제출 이벤트에서 트리거하여 URL을 리디렉션하고 원하는대로 변경할 수 있다고 생각하지만 여전히 아무것도하지 않습니다. 그건 그렇고, 다시 한번 감사합니다!
gacon

3
여기에서는 window.location와 window.location.replace의 차이를 설명했다 stackoverflow.com/questions/846954/...
마티아스 Bynens

답변:


343

다른 답변에서 언급 했듯이이 작업을 수행하기 위해 jQuery가 필요하지 않습니다. 표준 속성 만 사용할 수 있습니다.

그러나, 당신이 사이의 차이를 알고하지 않는 것 같다 window.location.replace(url)window.location = url.

  1. window.location.replace(url)주소 표시 줄의 현재 위치를 새 위치로 바꿉니다. 함수를 호출 한 페이지는 브라우저 기록에 포함되지 않습니다. 따라서 새 위치에서 브라우저의 뒤로 단추를 클릭하면 리디렉션 JavaScript가 포함 된 문서를 방문하기 전에보고 있던 페이지로 돌아갈 수 있습니다.
  2. window.location = url새 위치로 리디렉션합니다. 이 새 페이지에서 브라우저의 뒤로 버튼은 리디렉션 JavaScript가 포함 된 원본 페이지를 가리 킵니다.

물론 둘 다 유스 케이스가 있지만이 경우 나처럼 사용하는 것처럼 보입니다.

추신 : 아마도 http:JavaScript의 2 번째 줄에서 슬래시 두 개를 잊었을 것입니다 .

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

5
그러나 매우 정확하려면 window.location 대신 window.location.href를 설정해야합니다. 요즘 두 작품 모두 후자는 객체이지만 (그리고 고대 IE 버전에서 문자열을 할당하는 것은 지원되지 않습니다 ...)
Victor

1
@ 빅터 [인용 필요]
Mathias Bynens

1
@Victor 그것은 그것이 침입하는 고대 IE 버전을 나열하지 않습니다. @bobince의 의견은 맞습니다 : stackoverflow.com/a/10016109/96656#comment18225061_10016109
Mathias

빼기 1. 충분하지 않은 jQuery
VarunAgw

41

당신에게 진실을 말하십시오, 나는 여전히 당신이 필요한 것을 얻지 못하지만

window.location(url);

해야한다

window.location = url;

window.location 참조 에서 검색 하면 알려줍니다.


18

jQuery에는 이에 대한 옵션이 없으며 옵션도 없습니다. 이것은 완벽하게 유효한 자바 스크립트이며 jQuery가 래퍼 함수를 ​​제공 할 이유가 없습니다.

jQuery는 자바 스크립트 위에있는 라이브러리 일뿐입니다. jQuery를 사용하더라도 일반 자바 스크립트를 계속 사용할 수 있습니다.

Btw window.location은 함수가 아니라 다음과 같이 설정 해야하는 속성입니다.

window.location = url;

jQuery를 주장하는 데 대한 투표 거부에는 이에 대한 방법이 없습니다 (필수적인 과잉이며 권장되지는 않더라도) $ jq (window) .attr ( "location", " yourdomain.com" ); 또는 $ (location) .attr ( 'href', url);
rob

9
그 공감을 취소하기 위해 공감. Pim의 응답은 "jQuery에는 특정 방법이 없습니다"라고 쉽게 읽을 수 있습니다. 어휘 적 의미론에 대해 공감하는 것은 그 특권의 오용입니다.
Nigel Angel

"jQuery에는 특별한 방법이 없습니다."라는 말이 맞기 때문에 반대했습니다. 왜 $ jq (window) .attr ( "location", "yourdomain과 같은 추악한 솔루션을 원하십니까? com "); window.location = url과 같은 것을 가질 수있을 때;
Rodolfo Abarca

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

이것을 시도하십시오 ... 대안으로 사용


3

이 시도...

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

의미하는 것 :

id"abc"가 있는 양식을 찾아 attribute이름을 "action"으로 변경 한 다음 제출하십시오 ...

이것은 나를 위해 작동합니다 ... !!!


1
lol, 그거 재밌는 S 야! 그래도 나는 아이디어를 좋아한다. 창의성을위한 포인트!
Eric Bishard

-2

jquery없이 간단하게 할 수 있습니다.

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


작동하지 않으며 어떻게 할 수 있는지 알 수 없습니다. 위치는 전 세계가 아닙니다. window.location은 편집 : 예 확인되었습니다. 적어도 크롬에서는 작동하지 않습니다. 예제를 window.location으로 업데이트하는 것을 고려하십시오
Shayne

이상한-내 크롬, 파이어 폭스, 사파리에서 작동합니다-위치는 전역 속성입니다-예를 들어 크롬 콘솔에 입력 location = 'https://google.com'하면 페이지가 변경됩니다-다른 브라우저에서 시도합니까?
Kamil Kiełczewski

@Shayne을 입력 this하고 this.location콘솔에 입력 하면 무엇을 볼 수 있습니까?
Kamil Kiełczewski

this.location은 "this"가 창을 참조 할 때만 작동합니다. 거의 그렇지 않을 것입니다. 명시 적은 항상 암시 적보다 낫습니다. 특히 코드를 이식 할 수 없거나 재사용 할 수 없을 때 놀라지 않으려는 경우
Shayne

그렇습니다. 그러나 궁금합니다. 브라우저에서 왜 객체를 this참조하지 않는지 window(그리고 위의 스 니펫은 작동 하지 않습니다 )? (브라우저 전역 컨텍스트에서 windows 객체 로 설정되어야 함 )
Kamil Kiełczewski
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.