2014-07-18 2 views
0

나는 사용자를위한 옵션을 제공하고자하는 웹 사이트를 가지고 있는데, 테이블의 행을 클릭하면 테이블 행의 컨텍스트를 기반으로 다른 페이지로 다시 연결됩니다.Ajax 호출 후 PHP로 페이지를 리디렉션 할 수 있습니까?

그래서 내가하고있는 일은 기본적으로 jQuery로 데이터를 수집하고 PHP 파일에 게시하는 것입니다. PHP 파일에서 header('Location: ***')을 사용하여 리디렉션하고 싶습니다.

올바른 방법일까요? 이 방법으로 인해 아약스 요청은 반환 된 결과를 얻지 못하고 성공하지 못하고 아무것도 반환하지 않습니다. 그 전에는 리디렉션됩니다.

그래서 내가 사용할 수있는 경로입니까, 아니면 다른 아이디어가 있어야합니까?

+0

AJAX는 응답을 기대합니다. 서버 측 페이지에서 튀어 나오면 AJAX는 응답을받지 못합니다. 당신은 AJAX를 사용해서는 안됩니다. 그 AJAX 호출로하려는 일은 PHP 파일에 대한 간단한 POST로 수행되어야합니다. – durbnpoisn

+0

Ajax를 통해 리디렉션 경로를 반환 할 수 있으며 JS로 리디렉션을 수행 할 수 있습니다. – gskema

+0

AJAX가 성공을 반환 한 후에는 항상 자바 스크립트에서 리디렉션을 수행 할 수 있습니다. – StaticVoid

답변

1

예와 아니오. 당신은 jQuery로 작업하고 Ajax 호출이 같은 JSON으로 응답하는 경우 :

$.get('/your/path', function (json) { 
    if(json.success) { 
     document.location.href = json.redirect_to; 
    } 
}, 'json'); 
: PHP에서

<?php echo json_encode([ 
    'success' => true, 
    'redirect_to' => 'http://www.google.com', 
]); 

은 다음 아약스 호출 측이 더러운 일을 할 수 있다는 것을 의미

{ 
    success : true, 
    redirect_to : "http://www.google.com" 
} 

것을

내 두 센트.

4

번호

리디렉션 그들은 단지 요청한 리소스가 다른 곳에서 찾을 수있는 클라이언트를 알려줍니다.

JavaScript가 들어있는 이전에로드 된 페이지는 Ajax 요청에서 요청하는 리소스가 아닙니다. 그래도 리디렉션되는 리소스가 있어야합니다 (xhr.responseText에서 사용할 수 있습니다 (동일한 원본 정책이 방해하지 않으며 리디렉션 할 위치에서 200 OK 응답을 받았다고 가정)

당신은 항상 재 지정하려는 경우, 다음 Ajax를 사용하지 않는

.

을 가끔 재 지정하려는 경우, 당신은 몸 응답의에 URL을 넣을 필요가 다음 자바 스크립트와 함께 분석 할 수 있습니다 location에 할당하십시오.

+0

아, 대답 해 주셔서 감사합니다. 그러나 방문자를 항상 리디렉션하고 싶습니다. Ajax를 사용하지 않고 테이블에서 어떻게 할 수 있습니까? 기본적으로 행에서'id'를 얻고 싶습니다. 방문자가 행을 클릭하면'example.php? id = XXXXX'에 도착해야합니다. 이것이 바로 Ajax를 처음 사용하려는 이유입니다. 어떤 제안? –

+0

셀 중 하나에 링크를 삽입하십시오. 'event.target'을 검사하고, 링크 자손을 찾고, href를 얻고 그것을'location'에 할당하는 행에 클릭 이벤트 핸들러를 추가하십시오. – Quentin

3

PHP로 리디렉션 할 수는 없지만 쉽게 귀하의 아약스 전화 응답으로 리디렉션.

가 참조 : window.location.replace(...)

0

나는 기본적으로 행의 ID를 얻기 위해 원하는 방문자가 행을 클릭 할 때, 그들은 example.php에 착륙한다? ID = XXXXX

당신은 PHP에서 이렇게 완전히 할 수 있습니다. 테이블을 생성 할 때 각 행 (예 : XXXX)을 example.php?id=XXXXX에 연결하거나 onclick 이벤트를 window.location.href = 'example.php?id=XXXXX';을 실행하는 전체 행에 포함시킬 수 있습니다. 그것은 자바 스크립트와 행을 생성하고 이벤트 리스너를 사용하여 좀 더 좋은 수행 될 수

... 
<tr onclick="window.location.href = 'example.php?id=1234';"> 
    <td>1234</td><td>some value</td><td>some other value<td> 
</tr> 
<tr onclick="window.location.href = 'example.php?id=1235';"> 
    <td>1235</td><td>some value</td><td>some other value<td> 
</tr> 
...  

,하지만이 작동합니다 : 그래서 같은 테이블이 보일 수 있습니다.

관련 문제