2016-05-07 2 views
1

AJAXのいくつかの機能を操作し、基本的な問題に固執しました。正解を見つけることができません。PHP:文字列を関数の引数に入れる正しい方法

引数に文字列を送信します。私のコードはこのように見えます。

<li class="dropdown-item" onclick="term_ajax_get(797, Cats)">Cats</li> 

をしかし、私は要素にクリックしたときに、私はちょうど

function term_ajax_get(termID, termName) { 
    jQuery("a.ajax").removeClass("current"); 
    jQuery("a.ajax").addClass("current"); 
    jQuery("#loading-animation").show(); 
    var ajaxurl = 'http://localhost:3333/wordpress/wp-admin/admin-ajax.php'; 
    jQuery.ajax({ 
     type: 'POST', 
     url: ajaxurl, 
     data: {"action": "game-filter", term: termID, name: termName }, 
     success: function(response) { 
      jQuery(".games__cnt").html(response); 
      jQuery("#loading-animation").hide(); 
      return false; 
     } 
    }); 
} 

すべての作品の場合には

Uncaught SyntaxError: missing) after argument list 

マイjQの機能を得る:

echo '<li class="dropdown-item" onclick="term_ajax_get('. $s->term_id .', '. $s->name .')">'; 

クロームでは、レンダリングですterm_idで問題はないが、全く同じではない文字列からの結果。私はバックスラッシュと私がウェブで見つけることができるすべてのソリューションを試してみました。しかしそれでもそれを得ることはできません。

+0

問題は@NathanEdwardsの回答ごとに引用符をエスケープすることです。しかし、本当に 'onclick'イベントがあなたのHTMLに埋め込まれるのを避けるべきです。それは悪い習慣とみなされます。 jQueryを使用して、HTMLコードとは別のイベントを定義する必要があります。 '$( '。dropdown-item')。click()'またはこれに類似するものを使用します。正しいとすれば、PHPでJavaScriptコードを生成する必要はありません。 – Spudley

答えて

1

文字列パラメータの前後にエスケープされた引用符を追加すると便利です。あなたの関数で

<li class="dropdown-item" onclick="term_ajax_get(797, 'Cats')">Cats</li> 
+0

ありがとうございます!引用符を何度もエスケープしようとしましたが、構文が間違っています。私は恥を満たす。 –

+0

@NickAdamov、それは私たちの最高の状態です!特にPHP/JSの場合 –

-1
termName 

変数のように印刷する必要があります

echo '<li class="dropdown-item" onclick="term_ajax_get('. $s->term_id .', \''. $s->name .'\')">'; 

は、パラメータが文字列値にするために'$s->name'を追加してみてください、文字列であることを期待しています。

関連する問題