2015-01-26 2 views
0

Im php와 ajax에 상당히 새로 왔습니다. jquery에서 모달 창에로드 된 PHP 페이지 변수를 전달하려고합니다.PHP가 Ajax 게시물을받지 못했습니다.

나는 많은 사용자를 위해 테이블 ​​정보를 반환하는 PHP를 가지고있다. 각 사용자 이름 옆에는 수정 버튼이 있습니다. jquery 해당 단추의 데이터 ID 매개 변수를 잡는 있습니다.

$(document).ready(function() { 
$('.editButton').click(function(e){ 
e.preventDefault(); 
    var getid = $(this).data('id'); 

이제 "편집"버튼을 클릭 할 때 모달 창에서로드하려는 PHP 양식 스크립트가 있습니다. 이를 수행하는 유일한 방법은 모달 창을 여는 버튼을 태그로 만들고 href를 사용하여 PHP 스크립트를 호출하는 것입니다. 나는 값을 사용하여 클릭 한 사용자를 찾기 위해 데이터베이스에 대해 쿼리를 실행하는 PHP 스크립트에 "getid"변수를 전달하려고합니다 (데이터 ID 매개 변수는 다른 PHP 스크립트에 의해 생성 된 ID를 반환합니다). 그 사용자). 아약스 정보를 외부 PHP 스크립트로 보내려면 여러 가지 방법을 시도했지만, 내가하는 일과 상관없이 작동시키지 않아도됩니다. 여기

 $.ajax ({ 
     url: '/extschedule.php', 
     data: {getid : getid}, 
     type: 'POST', 
     success: function(data) { 
     alert('success'); 
     }   
}).error(function() { 
Alert('Error'); 

는 PHP extschedule.php에 코드입니다 :

$connection = mysqli_connect(stuff); 

      $idVar = $_POST['getid']; 

      $sqledit = "SELECT * from database WHERE id = (".$idVar.")"; 
      $result = $connection->query($sqledit); 


      while($row = $result->fetch_array(MYSQLI_ASSOC)){ 
       $name = $row['name']; 
       $id = $row['id']; 
       $team = $row['team']; 
       $language = $row['language']; 
       $dedicatedHotel = $row['ded_hotel']; 
       $satStart = $row['Sat_start_time']; 
       $satEnd = $row['Sat_end_time'];..............yadda yadda 

내가 사용하려고하면 (는 isset ($ _ POST [ 'getid'])))하지만 원인 것을 여기 내 아약스 요청입니다 PHP 측면에서 많은 문제가 있습니다. Ive는 잠시 동안 검색했지만 여전히 어떤 해결책도 얻을 수 없습니다. 누군가 이걸로 나를 도울 수 있습니까? 미리 감사드립니다!

+1

콘솔에서 요청한 오류를 확인 했습니까? –

+1

[sql injection attacks] (http : // bobby-tables)에 취약합니다.com), 그리고 몇 가지 기본적인 디버깅이 필요합니다. getid가 JS 코드에서 올바르게 설정되었는지 확인 했습니까? '$ _POST'에서 무엇이 나올지 보셨습니까? –

+1

_ "if (isset ($ _ POST [ 'getid'])))))를 사용하여 시도했지만 PHP 측에서 많은 문제가 발생합니다."_ - 어떤 오류가 발생 했습니까? 'getid'가 정의되어 있지 않으면 그 코드는'if' 블록에 싸여서 더 이상 실행을 멈추어야합니다. 그런 다음 선택적으로 오류를 기록하거나'getid'가 정의되지 않은 경우를 처리하십시오. – War10ck

답변

0

쿼리가 성공하면 에코 데이터가 표시되지 않습니다. 다시 시도해 볼 수 있습니까? echo "bla bla bla"; 파일에서 PHP.

+0

에코는 매우 길지만 기본적으로 데이터베이스에있는 모든 사용자의 값을 반환합니다. 내 상황이 충분히 혼란스러워서 여기에 추가 쓰레기를 추가하고 싶지 않았다. 이 호출은 특정 상황에서는 작동하지만 원하는 방식으로는 작동하지 않습니다. – user247326

0

PHP 버전간에 몇 가지 문제가 여러 번 발생했습니다. 나는 내가 미쳐 가고 있다고 생각했다. 그리고이 포스트 - Sending JSON to PHP using ajax는 조금 더 잘 설명한다.

  1. PHP. $ _POST를 평가하는 $ .ajax 메시지를 게시하려면 JSON.stringify가 필요합니다. 이 경우 dataType = 'text'로 설정하고 작업을 시작합니다. 그러나 위의 게시물은 실제로 당신이 그렇게 할 필요가 없다고 주장합니다. 하지만 해결할 수있을 때까지 여러 번 앞뒤로 전환했습니다. (나는 상황이 두 번 이스케이프 된 경우도있었습니다. PHP 5.2.8의 버그를 회상합니다).

  2. 당신은 dataType = 'json'으로 전환 할 수 있지만, PHP 측에서는 file_get_contents ('php : // input')를 사용하십시오. 그러면 application/json (콘텐츠 유형)의 원시 게시를 수락합니다. 당신은 제대로의 contentType을 설정하지가/X-WWW-형태-urlencoded로 응용 프로그램 '의 기본값을 사용하는 경우 내가 나타났습니다 무엇

    $.ajax({ 
        type: "POST", 
        url: 'yourserviceorscript.php', 
        contentType: 'application/json; charset=utf-8', // (optional) text/plain; charset=utf-8 
        dataType: 'json', // or text 
        async: true, // or false 
        data: JSON.stringify(data_obj), // obj gets urlencoded 
        cache: false, 
        success: function(obj) {}, 
        error: function(xhr, desc, exeptionobj){} 
    }); 
    

이다; charset = UTF-8 '도 있습니다.

사람들이 예제에서 사용한 것과 관계없이 요점은 그들이 원시 객체 대 데이터 : JSON.stringify (data_object)를 넣을 때 작동하지 못했습니다. PHP 측에서 "data % 5Baction % 5D = Server_Checkup"과 같이 문자열 화하지 않은 원래 게시물을 나타내며 해결되지 않습니다. 당신이 stringify하지 않으면 그것은 인코딩 된 URL을 가져옵니다. 도 참조 - How can I use JQuery to post JSON data?

이 주제에 대한 게시물이 많습니다.

관련 문제