2010-03-13 6 views
1

다른 브라우저에서 렌더링하고 싶은 PHP 파일을 만들고 있습니다. jquery post 함수가 다른 페이지로 리디렉션되지 않습니다. app-display.php 파일이 데이터를 반환 할 것으로 기대합니다. 코드를 살펴보십시오.PHP POST 응답

echo '<div class="showcase_URL"><a class="purl" name="'.$row->num.'" href="#">PROJECT URL</a></div>'; 

내가 자바 스크립트에서 지금까지이 것은 :

$(".showcase_URL a").click(function() { 
    //alert($(this).attr("name")); 
    var number = $(this).attr("name");  
    $.post(
    "app-display.php", 
    {app: number}, 
    function(data){ 
     top.location.href = 'app-display.php'; 
     }); 
}); 

제가 앱 display.php에 있습니다하지만 현재없이 나에게 페이지를주고있다

$query = 'SELECT num, title, thumb_url, url, type, cat, dated, details FROM app WHERE `num` = "$_POST[app]"'; 

을 app-display.php의 내용. 페이지의 다른 모든 단편이로드 중입니다 : 머리말, 꼬리말 등 PHP 응답 (방화범 지름) 페이지의 정상적인 html이 나타납니다.

어떻게해야합니까?

+0

jQuery POST를 사용하면 AJAX를 통해 작동하므로 "너무 명확하게 설명 할 수 있습니까?" 혼란 스럽네요. jQuery를 사용하여 게시하고 원하는 페이지를 표시 할 수 있습니다. 예를 들어, 투표 할 때 SO를 게시하고 투표 합계를 응답으로 받고이를 사용하여 페이지 값을 업데이트합니다. –

+0

@amit : 게시 된 쿼리는 SQL injection에 열려 있습니다. 다행히도 그것은 실제적인 코드에서 무엇을 가지고 있는지를 설명하는 것이 아니고 대표적인 것이 아닙니다. 또한, 현재의 디자인은 분명하지 않습니다. 모든 파일의 이름과 함께 더 많은 내용 (완전한 것이지만 간결하며 예제 코드는 최소한의 테스트 케이스 여야 함)을 명확히하는 데 도움이됩니다. – outis

답변

1

그냥 평범한 것을 사용하십시오. <form action="app-display.php"> 그런 식으로 데이터를 다시 가져올 필요가 없습니다.

0

변수를 정의한 선을 제외하고는 PHP 페이지에서 무엇을 가지고 있습니까? 그냥 원시 텍스트를 넣어두면 효과가 있습니까? 그리고 결국 쿼리 라인이 잘못되었다고 생각하면 읽어야합니다. $query = 'SELECT num, title, thumb_url, url, type, cat, dated, details FROM app WHERE num = '.$_POST["app"];

1

콜백에 top.location.href을 설정하는 것이 문제입니다. 이것이 리디렉션입니다. $.post()이 제대로 게시 중이며 완료되면 해당 콜백 함수가 실행되어 data 매개 변수의 결과가 반환됩니다. 콜백을 리디렉션하면 app-display.php에 곧바로 GET 요청을 보내고 모든 것을 버리게됩니다.

실제로 이것이 AJAX 호출 인 경우 &이 새 페이지로 전달되지 않으면 리디렉션 대신 data 매개 변수를 사용하여 콜백 함수를 변경하십시오. function(data) { $('#some-div').html(data); }과 같은 것은 응답을 일부 div에 덤프해야합니다.