2016-07-19 8 views
0

POSTを使用して、選択した項目のid値をsearch.phpファイルに渡そうとしています。 GETを使用しても正常に動作しますが、POSTを使用すると動作しません。jQuery UIオートコンプリート結果の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

「うまくいきません」は大きな文です。何が起こっていますか?起きていません? JavaScriptエラーが出ますか?データはPHPに送られますか? PHP AJAXファイルで 'var_dump($ _ POST);'を実行するとどうなりますか? –

+0

データはPHPページには送られません。 'var_dump($ _ POST);'私に 'array(0){}'を与えます。JSエラーはありません。 @cale_b –

+1

@KumaranS GETとPOSTから渡されたパラメータの両方を含んでいるので、サーバ上で '$ _REQUEST'を使うことができます。両方を使うのはベストプラクティスではありません –

答えて

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); 
    } 
}); 
関連する問題