2016-07-19 11 views
0

Ich versuche, den ID-Wert des ausgewählten Elements in die search.php-Datei mit POST übergeben. Es funktioniert gut, wenn ich GET verwende, aber nicht funktioniert, wenn ich POST verwende. HierWert übergeben durch POST auf jQuery UI Autocomplete-Ergebnis klicken

ist der Code, den ich habe:

$(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); 
     } 
    }; 
}); 

Die Datenquelle wird aus der Datenbank gezogen und konvertiert JSON PHP.

+1

"Funktioniert nicht" ist eine große Aussage. Was ist los? Passiert nicht? Erhalten Sie einen Javascriptfehler? Gehen die Daten zu PHP? Was ist, wenn Sie 'var_dump ($ _ POST);' in der PHP AJAX-Datei? –

+0

Die Daten gehen nicht auf die PHP-Seite. 'var_dump ($ _ POST);' gibt mir 'array (0) {}' .. Es gibt keine JS-Fehler. @cale_b –

+1

@KumaranS Sie können '$ _REQUEST' auf dem Server verwenden, da es beide Parameter enthält, die vom GET und vom POST übergeben wurden - oder entscheiden, ob Sie GET oder POST verwenden. Es ist keine bewährte Methode, sie beide zu verwenden. –

Antwort

0

Nachdem ich Q & A in den Kommentar oben vorgeschlagen hatte, gelang es mir, es zur Arbeit zu bekommen. jQuery Autocomplete verwendet GET, um Variablen zu übergeben. Daher musste ich einen AJAX-Aufruf verwenden, um die Variable stattdessen mit dem HTML-Datentyp zu übergeben. Hier ist der Code:

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); 
    } 
});