2012-02-22 4 views
0

Ajax를 통해 요청을 처리해야하는 jquery로 등록 양식을 작성 중입니다. 내 코드 :ajax와 jquery를 사용하여 콘텐츠를 출력하고 리디렉션하는 방법은 무엇입니까?

$.ajax( 
{ 
    type: "POST", 
    url: "http://www.example.com/register.php", 
    data: $("#register-form").serialize(), 
    cache: false, 
    success: function(message) 
    { 
        $("#reg_notification").html(message).fadeIn(400);    
    }   
}); 

이제 register.php해야 하나 출력 예를 들어 이메일 주소가 유효하지 않습니다 및이 사업부의 reg_notification에 투입 될 경우 오류. 오류가 없으면 사용자는 "시작 페이지"로 리디렉션되어야합니다. 그러나 즉, 내가 jQuery 코드에 location.href를 사용하지만 PHP에서

header("Location: http://www.example.com") 

를 사용하지 수 있도록이 페이지는에 allways 정적이지 것이 중요하다. 문제는 사용자가 리디렉션되지 않지만 www.example.com의 내용이 div reg_notification에 저장된다는 것입니다.

How to manage a redirect request after a jQuery Ajax call 비슷한 문제가 발견되었지만 차이점은 내 서버로 인해 사용할 수없는 json을 사용하고 있고 PHP 스크립트가 아니라 자바 스크립트 내부로 리디렉션된다는 것입니다.

+0

PHP 파일로 리디렉션 할 수 없으며 브라우저에서 리디렉션 할 수도 없습니다. 전체 페이지를 요청의 결과로 바꿀 수 있습니다. –

+0

당신이 요구하는 것을하는 사이트의 예가 있습니까? –

+0

@phpheini 물론, 링크 된 질문을보십시오. – hakre

답변

1

헤더 리디렉션을 사용할 수 없습니다. 그런

사용 무언가 : PHP에서

... 
success: function(message) 
{ 
    $("#reg_notification").html(message) 
      .fadeIn(400, function() {window.location = "url"}); 
} 

또는

success: function(response) 
{ 
    if (response.success) { 
      $("#reg_notification").html(response.message) 
       .fadeIn(400, function() {window.location = response.redirectTo; }); 
    } else { 
      // somethings else 
    } 
} 

: XMLHttpRequest를 투명하게 GET에 대한 URL을 리디렉션 따르기 때문에

header("Content-type: application/json"); 
echo json_encode(array(
    "success" => true, 
    "message" => "some message", 
    "redirectTo" => "my url" 
)); 

UPDATE 헤더는 불가능 리디렉션결과. there

+0

첫 번째 예는 오류가 발생하더라도 항상 나를 리디렉션합니다. 두 번째 예제에서, 리디렉션 할 위치를 스크립트에 어떻게 알려주겠습니까? – phpheini

+0

나는이 시도 그래서 내가 지금 내 서버에 JSON을 가지고 내가 일을 나던 이유를 얻을 해달라고 :'$ 아약스 ( \t { \t \t 유형 : "POST", \t \t URL을 : "HTTP : // WWW. example.com/register.php " \t \t 데이터 : $ ("# 레지스터 형 ")) (직렬화 \t \t dataType와 :."JSON " \t \t 성공 : 기능 (데이터 textStatus) { \t \t \t if (data.redirect) { \t \t \t \t window.location.replace (data.리디렉션); 다른} \t \t \t \t \t \t { \t \t \t \t $ ("#의 signin_message") replaceWith (data.form).; \t \t \t} \t} \t \t \t \t});' 그리고 다음 PHP에서'헤더 ("콘텐츠 유형 : 응용 프로그램/JSON"); 에코로 json_encode (어레이 ( "성공"= "참 "폼 "=>"어떤 메시지 "가 ) =>"http://www.example.com " "를 리디렉션 "); ' – phpheini

+0

먼저 console.log (data)를 추가하십시오; 그리고 검사 결과 .. 데이터 유효 json 개체 다음 시도하십시오 window.location = data.redirect ... – komelgman

관련 문제