2016-09-06 4 views
-2

Ich muss Dynamic Dropdown-Option erstellen. Die zweite Auswahl hängt von der ersten Eingabe ab. Ich möchte Ajax Anfrage von CakePHP App zu Aktion in Controller machen, aber ich bin mit Ajax-Code stecken.Ajax Anfrage in PHP

Ich versuche:

<?= $this->Form->select('country_id' ,$optionsCountry, ['id' => 'country_id'], 'onclick' => 'getcit'); ?> 

<?= $this->Form->select('Cities', $optionsCities); ?> 

als ich möchte Funktion Wich erstellen, wird auf Änderung der Select-Option aufgerufen werden, aber ich bin stucked.

<script> 
function getcities(str){ 
    var xhttp; 
    xhttp = new XMLHttpRequest(); 
    xhttp.onreadystatechange = function(){ 
     xhttp.open('POST', 'controller' => 'cities', 'action' => 'getcit',+str , true); 
     xhttp.send(); 
    } 
} 

Ich bin nicht sicher, wie Funktion in html nennen, onChange? anwählen? Und wie man Daten von der ersten Eingabe abruft, es an die Controller-Aktion sendet, Daten vom Controller holt und sie in einem anderen select einstellt?

Danke, Mit freundlichen Grüßen,

I jQuery.ajax als vielleicht einfachere Lösung gefunden, aber ich stucked wieder:

<script> 
$(document).ready(function){ 
    $('#country_id').change(function() { 
     $.ajax({ 
      url: "", 
      data: "", 
      type: 'POST' 
     }); 
    }); 
} 
; 

Können Sie mir helfen mit: -Wie Fetch data from first Wählen Sie - Weiterleiten zum Controller - und setzen Sie den zurückgegebenen Wert auf secon Wählen Sie

Danke,

+0

[Hier] (https://developer.mozilla.org/en-US/docs/Web/Events) ist eine Liste von Ereignissen. 'someElement.onXXX' wird es zur richtigen Zeit aufrufen. Wie für den Rest der Frage, fügen Sie bitte weitere Details hinzu, was Sie ausprobiert haben, damit die Leute Ihr Problem verstehen können. – Actorclavilis

Antwort

1

Sie Ajax-Aufruf nach dem ersten <select> Änderung erstellen müssen, die Daten für die zweite <select> zurückgibt.

function getcities(id) { 
    $.ajax({ 
     method: 'POST', 
     url: 'some.php', 
     data: { 
      country_id: id 
     }, 
     success: function (data, status) { 
      $('.second_select').html(data); // If returns as html 
     } 
    }); 
    return; 
}