2014-10-17 10 views
0

기본 AJAX POST로 작동하는 데 문제가 있습니다. 내가 jquery .click을 사용하는 데 문제가 생긴 후에 나는 onclick으로 전환했다. 내가 맹렬한 실수를 저질렀는지 궁금하다. 확실한 실수가 없다면 아파치가있는 것일 수 있습니까? 너무 많은 경험이 없으므로 도움이 될 것입니다. 내가POST 데이터를 가져올 수 없습니다.

<?php 
if (isset($_POST['source1'])) 
     $src1 = $_POST['source1']; 
    else $src1 = "post data not obtained"; 

    echo $src1; 

      echo "<pre>" . print_r($_REQUEST, 1) . "</pre>"; 

    print_r($_POST); 
    var_dump($_POST); 
    var_dump($_POST);die; 
?> 

:

여기
function postData() { 
      console.log("outside ajax is working"); 

      $.ajax({ 
       type: "POST", 
       url: "/markerpages.php", 
       data: { 
        source1: "some text", 
        source2: "some text 2"}, 
       success: function (data) { 
        console.log("inside ajax is working"); 
       }, 
       error: function() { 
        console.log("ajax post failed") 
       } 
      }); 

내 PHP는 웹 페이지에있는 것입니다 : 여기

<a href="markerpages.php" onclick="postData()">click this for php page</a> 

함수입니다 : 여기

은 함수에 대한 링크입니다 방화 광에서 오류를 반환하지 않으며, 나는 아약스와 바깥에 배치 된 로그 문을 얻고있다. PHP 페이지. 도움을 주셔서 진심으로 감사드립니다.

+0

당신은 당신이 올바른 PHP는 URL을 가지고 확신? 'url : "/markerpages.php",' – Ghost

+0

마지막 스크립트의 결과는 무엇입니까? 아무것도 인쇄합니까? postData 함수에 – Jerodev

+0

, url 변수가 정의되어 있습니까? –

답변

2

사용자를 앵커 태그를 사용하여 페이지로 보냅니다. 이렇게하면 모든 게시물 데이터가 손실됩니다.

이 모든
<a href="#" onclick="postData()">click this for php page</a> 
+0

그게 내가 찾고있는 해답이 될 수도 있습니다! 동적으로 생성 된 페이지로 보내고 있지만 데이터를 POST하는 동시에 발생시키지 않도록해야한다고 가정합니다. – ambe5950

+0

그래서 동적으로 생성 된 PHP 페이지로 보내고 싶지만 그 페이지로 POST 데이터를 보내고 싶습니다 (단순화 된 예제가 이것을하지는 않지만 실제로 이것은 내가하는 일입니다). – ambe5950

+0

HTML 양식으로 모든 것을 감쌀 수 있으며, 숨겨진 필드에 게시물 데이터를 넣고 제출 버튼으로 앵커 태그를 사용할 수 있습니다. 그것은 모두 정확히 무엇을하고 싶은지에 달려 있습니다. – Jerodev

1

먼저 당신이 그렇게 리디렉션 없을 것하고는 JS 기능에 return false;을 넣어해야합니다 : 당신은 사용자가 페이지에 남아 있는지 확인 #와 앵커 태그에 URL을 교체해야

URL이 정확하고 아약스 게시 중에 오류를 검색하는 경우 개발자 네트워크에 요청을 확인하십시오.

+0

감사합니다. 나는 이것에 대해별로 보지 않았다. 게시물 요청이 취소되었습니다. – ambe5950

0

링크를 클릭하면 postData()이 호출되었지만 브라우저에서 <a href>에 지정된 URL을로드하고 있습니다. 당신은 세 가지 가지 중 하나를 수행 할 수 있습니다 event.preventDefault() :

  1. 은 postData를() 함수의 맨 위에 다음 줄을 추가합니다. 이렇게하면 원래 이벤트 클릭 동작이 중지되고 선호되는 방법입니다.

  2. onclick 특성을 변경하고 return false을 추가하여 URL 클릭 동작을 방지하십시오. 예 : onclick="postData(); return false;

  3. 으로 변경하십시오. 그러나 페이지 URL이 mypage.htm#으로 변경되므로 이는 좋은 접근 방법이 아닙니다.

또 다른 유용한 디버깅 팁 : 당신과 같이 출력 data 변수 (당신의 PHP 스크립트의 반환 값을) 할 수 있습니다 console.log(data);. 당신은 결국 다시 프런트 엔드에 서버에서 값을 전달하는 형태를 구축 손을 것 같다부터

그리고,이 글을보고 제안 : Pass a PHP Array to Javascript as JSON using AJAX and json_encode()

관련 문제