2016-07-19 2 views
0

POST를 사용하여 선택한 항목의 id 값을 search.php 파일에 전달하려고합니다. GET을 사용하면 제대로 작동하지만 POST를 사용하면 작동하지 않습니다.jQuery UI autocomplete 결과에서 POST를 통한 값 전달

$(function() { 
    $(".search").autocomplete({ 
     source: function(request, response) { 
      $.ajax({ 
       url: "/_inc/autocomplete.php", 
       dataType: "json", 
       data: { 
        q: request.term 
       }, 
       success: function(data) { 
        response(data); 
        console.log(data); 
       } 
      }); 
     }, 
     minLength: 2, 
     select: function(event, ui) { 
      //alert('selected: ' + ui.item.name); 
      var id = ui.item.id; 
      $.post("/search.php", {"id": id}); 
      $(location).attr('href', '/search.php'); 
     } 
    }).data("ui-autocomplete")._renderItem = function(ul, item) { 
     if(item.label == 'No Match Found'){ 
      return $("<li>") 
      .data("item.autocomplete", item) 
      .append(item.value) 
      .appendTo(ul) 
      .css("cursor", "default"); 
     } else { 
      return $("<li>") 
      .data("item.autocomplete", item) 
      .append(("<a>" + item.id + " - " + item.name + "</a>")) 
      .appendTo(ul); 
     } 
    }; 
}); 

데이터 소스가 데이터베이스에서 뽑아 PHP를 사용하여 JSON으로 변환됩니다 : 여기

는 내가 가지고있는 코드입니다.

+1

"작동하지 않음"은 큰 진술입니다. 무슨 일이야? 안 그랬어? 자바 스크립트 오류가 발생합니까? 데이터가 PHP로 이동합니까? PHP AJAX 파일에서'var_dump ($ _ POST);'를하면 어떨까요? –

+0

데이터가 PHP 페이지로 이동하지 않습니다. 'var_dump ($ _ POST);'는'array (0) {}'를 제공합니다. JS 에러가 없습니다. @cale_b –

+1

@KumaranS GET과 POST에서 전달 된 매개 변수를 모두 포함하기 때문에 서버에서'$ _REQUEST'를 사용할 수 있습니다. 또는 GET 또는 POST 중 어느 것을 사용하는지 결정할 수 있습니다. 둘 다 사용하는 것은 좋지 않습니다. –

답변

0

위의 설명에서 제안 된 Q &을 거친 후 작동하게되었습니다. jQuery 자동 완성은 GET을 사용하여 변수를 전달하므로 html 데이터 유형 대신 변수를 전달하기 위해 AJAX 호출을 사용해야했습니다. 다음은 코드입니다.

var id = ui.item.id; 

$.ajax({ 
    url: "/search.php", 
    type: "POST", 
    dataType: 'html', 
    data: { id: id }, 
    success: function(data){ 
     alert(data); 
    }, 
    error: function (xhr, ajaxOptions, thrownError) { 
     alert("ERROR:" + xhr.responseText+" - "+thrownError); 
    } 
}); 
관련 문제