2016-03-29 10 views
0

私は、フォームのaction属性を生成するためにJavaScriptを使用していますが読み込まれていない:JS-生成GET変数はPHP

$("#select-font").on('change', function(){ 
    var font = $(this).val(); 
    $("#font-family").val(font); 
    $(this).css({ 
     'font-family': font 
    }); 
    $("#edit-doc").css({ 
     'font-family': font 
    }); 
    // BUG IS HERE ---> 
    $('#save') 
     .attr('src', '/img/icons2/save.png') 
     .attr('onclick', '$(this).parents("form").submit();'); 
    $('#save') 
     .parents('form') 
     .attr('action', 
      String($('#save') 
       .parents('form') 
       .attr('action')) + '&autosave=true'); 
    }); 
    $("#select-font-size") 
     .on('change', function(){ 
      var size = $(this).val(); 
      $("#edit-doc").css({ 
       'font-size': size 
      }); 
      $("#font-size").val(size); 
      // BUG IS HERE ---> 
      $('#save') 
       .attr('src', '/img/icons2/save.png') 
       .attr('onclick', 
        '$(this).parents("form").submit();'); 
      $('#save') 
       .parents('form') 
       .attr('action', 
        String($('#save') 
         .parents('form') 
         .attr('action')) + '&autosave=true'); 
     }); 

GET変数は、次のページに渡されます。 URLバーの場所はhttp://localhost/foo/?var1=a&var2=b&autosave=trueと表示されます。しかし、GET変数をテストすると、次のようになります。

条件は実行されません。なぜPHPは変数を見ることができないのですか?

+0

を使用し、むしろインラインクリックハンドラを使用するよりも、これを試して追加するときも

if (isset($_GET["autosave"])) { // your code... } 

を最初のPHP側で –

+0

私は 'print_r'をGET配列に使用しました。 : 'Array([var1] => a [var2] => b [autosave] =>)'なので、値は渡されず、実際の変数が作られます。 – TricksfortheWeb

+0

それから、JS側が正しく渡されているかどうかチェックしてください。 –

答えて

1

よりもむしろ

if($_GET["autosave"]){ 
    // some code... 
} 

試して使用して:ハンドラは、受信したURLを確認してくださいjQuery.on()

$('#save') 
    .attr('src', '/img/icons2/save.png') 
    .on('click', function(){ 
     $(this).parents("form").submit(); 
    }); 
関連する問題