Yii2 Ajax-DropDownList-änderung Inhalt div

Ich entwickle eine Anwendung mit Yii2 und ich habe nicht zu viel wissen von ajax. Also habe ich versucht, ein Beispiel von W3Schools (http://www.w3schools.com/php/php_ajax_database.asp)

Ich möchte eine Art filter, und ich will verändern Sie den Inhalt von einem div-Element mit einem Wert aus einer DropDownList, hier ist der code der Ansicht:

...
<script>
function showUser(str) {
  if (str==="") {

document.getElementById("transactions").innerHTML="";
return;
} 
  if (window.XMLHttpRequest) {

//code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
} else { //code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
 xmlhttp.onreadystatechange=function() {
  if (xmlhttp.readyState==4 && xmlhttp.status==200) {

  document.getElementById("transactions").innerHTML=xmlhttp.responseText;
  }
 };    
    xmlhttp.open("GET",document.location.href="filter?by="+str,true);
    xmlhttp.send();
}
</script>
<?php $this->head() ?>
</head>

Nun die DropDownList:

<?=Html::dropDownList(
    'test', //name
    'b', //select
    ['' => 'Select Filter...', '1' => 'Exchanging Now', '2' => 'Last Exchanged', '3' => 'Last Offered', '4' => 'Last Discounted', '5' => 'Last Recieved', '6' => 'View All'],
    ['onchange'=> 'showUser(this.value)'])
   ?>

Gut, der Inhalt des div "Transaktionen", die es verpasst aber, die Umleitung auf localhost/.../filter?von=x

Wie kann ich verhindern, dass diese Umleitung? In mein controller, ich fahre einen string. Ist das ein problem?

--- EDIT ---

Nach einigen Recherchen habe ich gelesen, Pjax, ich habe versucht, ein paar tests und mit einem einfachen link und mit den arbeiten kann aber nicht mit der dropdownlist. Hier die änderungen auf meinen code.
Ansicht:

<div id="categories">
<?=Html::a('TEST LINK', Url::to(['filter', 'by' => 1]), ['data-pjax' => 'transactions'])
?>
    <?= Html::dropDownList(
            'test', //name
            'b', //select
            ['' => 'Select Filter...', '1' => 'Exchanging Now', '2' => 'Last Exchanged', '3' => 'Last Offered', '4' => 'Last Discounted', '5' => 'Last Recieved', '6' => 'View All'], //items
            ['onchange' => 'this.form.submit()'], ['data-pjax' => 'transactions']
    )
    ?>

PjaxCode
StackOverflow nicht lassen, mir den code von Pjax, so dass ich ein Bild hochgeladen über einen link

Controller - Nur um zu zeigen, ein Beispiel, was ich fahre:

public function actionFilter() {
$by= $_POST['test'];
$string = "";
if ($by == 1) {
return $string = self::searchPendingEvent();  
}}

public function searchPendingEvent() {
    $query = Event::findBySql("Select * from dot_events where (dot_event_to_user =" . Yii::$app->user->id . " "
                    . "and dot_event_type = 1 and dot_event_completed = 0) or ("
                    . "dot_event_type = 4 and dot_event_to_user =" . Yii::$app->user->id . " and dot_event_completed = 0)"
                    . " order by dot_datecreate DESC")->asArray()->all();


    $string = "";
    if ($query == null) {
        $string .="Nothing to show :(";
    } else {

        for ($i = 0; $i < sizeof($query); $i++) {

            $string.= self::formatEvent($query[$i]['dot_event_id']);
        }
    }

    return $string;
}

public function formatEvent($id) {

if ($model['dot_event_type'] == 1 && $model['dot_event_to_user'] == Yii::$app->user->id) {
        $string .= "<p class='text-primary text-right p1'>" . Functions::xTimeAgo($model['dot_datecreate'], date("c", time())) . "</p>";
        $string .="<div class='well'>";
        $string .="<p class='lead text-left text-primary'>";
        $string .= "<img class='img-circle' height='50' width='50' src='" . Yii::$app->request->baseUrl . "/img/user/" . $model['dot_event_to_user'] . ".png' alt='Image Missing'>";
        $string .=Html::a("You", ['user/profile']);
        $string .="</p>";
        $string .="<p class='text-left'>requested " . Html::a($profile[0]['full_name']);
        $string .="to trade " . Html::a($tradeE['dot_cr_dots'] . " pts", ['dashboard/index']) . " from company ";
        $string .=$company['dot_com_name'] . " for company" . $companyE['dot_com_name'];
        $string .="</p>";
        $string .="</div>";
    }
InformationsquelleAutor jfaustino | 2014-07-16
Schreibe einen Kommentar