2015-12-02 2 views
6

У меня возникли проблемы со следующим кодом JQueryПередача 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) 


     }); 

     });' 
); 

я хочу ссылку Аякса, чтобы быть, как это http://192.168.1.4/~user/church/backend/web/death/stl_set_relation?id=20&name=1

но с моим кодом я не в состоянии передать значение идентификатора. то, что создает мой код следующий URL

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

я также пытался как этот

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

, но это не дает мне желаемого результата

как я могу передать значение идентификатора правильно?

+1

'% 2B = +', так что конец вашей ссылке кодируется '+ идентификатор' превращается в '% 2Bid 'так как вы используете кавычки, не включайте + внутри кавычек. try: ''+" id "'' – zer00ne

+1

Я попробовал и получил этот URL-адрес http://192.168.1.4/~user/church/backend/web/death/stl_set_relation?id=%2B%22id%22&name=20 – Bloodhound

+1

Это не то, что я сказал. Я говорю об идентификаторе. Код, который вы только что опубликовали в предыдущем комментарии, даже не имеет +, и у него нет двойных кавычек. – zer00ne

ответ

1

Я решил проблему, используя следующий код

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

Вы не должны манипулировать такими URL. Посмотрите на пример @ GAMITG. передать переменные 'id' и' relation' в качестве данных POST: $ .post (".. \ Yii :: $ app-> getUrlManager() -> createUrl (['death/stl_set_relation']). '", {id: id, relation: n}) ' – Beowulfenator

+0

Я получил это решение до того, как @gamitg отправил свой ответ. Да, его ответ - более чистый. – Bloodhound

+0

Конечно, я просто говорю i t намного чище передавать ваши данные как объект ('{id: id, relation: n}'), чем добавлять его к URL-адресу. – Beowulfenator

2

попробовать, как это может быть, это будет работать ..

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

он дал мне ошибку синтаксиса ошибки, неожиданную «смерть» (T_STRING) – Bloodhound

+0

попробовал отредактировать один. –

+0

это не сработало, я перенаправлен на этот URL 192.168.1.4/~user/church/backend/web/death/stl_set_relation?id=%22%2Bid%2B%22&name=22 – Bloodhound

0

Попробуйте эту строку

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

Все, что вы пишете в одинарных кавычках здесь, будет напечатано, как и в JS. Вы печатаете знак + так, как он есть. Также вы используете id внутри области PHP, что не должно быть.

+0

это дало мне ошибку jquery Uncaught SyntaxError: Неожиданный токен} – Bloodhound

+0

Попробуйте это: '$ .post (\ ''. \ Yii :: $ app-> getUrlManager() -> createUrl ([" death/stl_set_relation "]). '? id = "+ id +" & name = "+ id \')' –

+0

перенаправил меня на эту ссылку 192.168.1.4/~user/church/backend/web/death/stl_set_relation%E2%80%8C%E2%80 % 8B? Id =% 22 + id +% 22 & name =% 22 + id – Bloodhound

1

Вы можете сделать это по-другому, используя класс yii\helpers\Url.

Например:

$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 }); 
     }); 
    });' 
); 
Смежные вопросы