2015-12-02 15 views
6

Ho problemi con il seguente codice jQueryPassaggio di una variabile jquery

$this->registerJs(
    'jQuery(document).ready(function($){ 

    $(".member").on("change",function(){ 
     var id = $(this).attr("id"); 
     // alert(id); 
     var n = $(this).val(); 
     // alert(n); 
     $.post("'.\Yii::$app->getUrlManager()->createUrl(['death/stl_set_relation','id'=>'+id']) 
      .'&name="+id) 


     }); 

     });' 
); 

voglio il link ajax per essere come questo http://192.168.1.4/~user/church/backend/web/death/stl_set_relation?id=20&name=1

ma con il mio codice io non sono in grado di trasmettere il valore di id correttamente. ciò che crea il mio codice è il seguente url

http://192.168.1.4/~user/church/backend/web/death/stl_set_relation?id=%2Bid&name=20 

inoltre ho provato come questo

$.post("'.\Yii::$app->getUrlManager()->createUrl(['death/stl_set_relation','id'=>'"+id"']) 
       .'&name="+id) 

ma non mi ha dato il risultato desiderato

come posso passare il valore di id correttamente?

+1

'% 2B = +' modo che l'estremità del link è codificato '+ id' diventa '% 2Bid dal momento che stai usando le virgolette, non includere il + all'interno delle virgolette. prova: ''+" id "' – zer00ne

+1

ho provato e ho ricevuto questo URL http://192.168.1.4/~user/church/backend/web/death/stl_set_relation?id=%2B%22id%22&name=20 – Bloodhound

+1

Non è quello che ho detto di fare. Sto parlando dell'id. Il codice che hai appena postato nel commento precedente non ha nemmeno un + né ha virgolette doppie. – zer00ne

risposta

1

ho risolto il problema utilizzando seguente codice

$.post("'.\Yii::$app->getUrlManager()->createUrl(['death/stl_set_relation']) 
       .'?id="+id+"&relation="+n) 
+1

Non dovresti manipolare URL come quello. Guarda l'esempio di @GAMITG .È molto più pulito per passare le tue variabili 'id' e' relation' come dati POST: '$ .post (" '. \ Yii :: $ app-> getUrlManager() -> createUrl ([' death/stl_set_relation ']).' ", {id: id, relation: n}) ' – Beowulfenator

+0

ho questa soluzione prima che @gamitg abbia postato la sua risposta Sì, la sua risposta è quella più pulita – Bloodhound

+0

Certo, sto solo dicendo che È molto più pulito passare i tuoi dati come oggetto ('{id: id, relation: n}') piuttosto che aggiungerlo all'URL. – Beowulfenator

2

provare come questo può essere che funzionerà ..

$.post("'.\Yii::$app->getUrlManager()->createUrl(['death/stl_set_relation','id'=>'"+id+"']) 
     .'&name="+n); 
+0

mi ha dato un errore di sintassi errore, imprevisto "morte" (T_STRING) – Bloodhound

+0

prova modificato uno. –

+0

non ha funzionato sono stato reindirizzato a questo URL 192.168.1.4/~user/church/backend/web/death/stl_set_relation?id=%22%2Bid%2B%22&name=22 – Bloodhound

0

Prova questa linea

$.post("<?php echo \Yii::$app->getUrlManager()->createUrl([\'death/stl_set_relation\']) ?>?id="+id+"&name="+id).

Qualsiasi cosa si stia scrivendo tra virgolette singole verrà stampata come nel JS. Si sta stampando il segno + così com'è qui. Inoltre stai usando id all'interno di scope PHP che non dovrebbe essere il caso.

+0

mi ha dato un errore jquery Uncaught SintassiErrore: token imprevisto} – Bloodhound

+0

Prova questo: '$ .post (\ ''. \ Yii :: $ app-> getUrlManager() -> createUrl ([" death/stl_set_relation "]). '? id = "+ id +" & name = "+ id \')' –

+0

mi ha reindirizzato a questo link 192.168.1.4/~user/church/backend/web/death/stl_set_relation%E2%80%8C%E2%80 % 8B? Id =% 22 + id +% 22 e nome =% 22 + id – Bloodhound

1

È possibile farlo in un altro modo utilizzando la classe yii\helpers\Url.

Ad esempio:

$this->registerJs(
    'jQuery(document).ready(function($){ 
     $(".member").on("change",function(){ 
      var id = $(this).attr("id"); 
      // alert(id); 
      var n = $(this).val(); 
      // alert(n); 
      $.post("'.Url::toRoute('death/stl_set_relation').'", { id: id, name: id }); 
     }); 
    });' 
); 
Problemi correlati