2016-11-08 7 views
2

さて、このような状況があります。 私は、フロントエンドに私は、AJAX呼び出しを行い、あなたのようにAJAX呼び出しの結果とドロップダウンを埋めるドロップダウンとテキストボックスを持って、jqueryでURLにハッシュを渡してmysqlクエリを作成します

id|name 

It has records like 

1|Cashier 
2|Software Developer 
3|C# 
4|C# 3.0 
5|C# Programming 

だから、簡単なスキーマを使用して、テーブルと呼ばれるスキルを持っていますタイプは、

$.getJSON(that.path + "?q=" + encodeURIComponent(keyword) , function(result){ 
     if (result.length == 0) { 

などがあります。

「ソフトウェア」や「キャッシャー」などの単語を検索すると、適切な結果が得られます。 しかし、問題は、その中に「#」記号があるスキルを検索することです。

that.pathは、私はそれで「#」ですべてのスキルを検索したい場合はときに私、AJAX呼び出しのための私のURLが次に

http://somedomain.xyz/skills/findSkills?q=%23 

のようなものになり

public function findSkills() { 
    print_r($_GET['q']); 

PHP関数につながります$ _GET ['q']を印刷すると、何も印刷されません。 どうすればこの問題を解決できますか?

予想されるSQLクエリ

SELECT * FROM skills WHERE (`name` LIKE '%#%') ORDER BY `id` ASC LIMIT 10 

私は(ハッシュを含む)、ハッシュ後のURLのどの部分がサーバーに送信されていないことを読みました。これが当てはまる場合、これを実装する他の方法がありますが、これは '#'でレコードを取得するSQLクエリを作成することを可能にしますか?

ご協力いただければ幸いです。必要に応じて、他のデータ/コードに記載されていないかどうか教えてください。それに応じて質問を更新します。

+0

これは '$ _GET'の代わりに' $ _POST'で可能になるはずです。 – Efekan

+0

また、 '#'が送信してカスタム値に変更しようとしているのか、カスタム値が設定されているのか確認することができます。 – Efekan

答えて

0

私にとって、それは次のテストスニペットで正常に動作します:

if (isset($_GET['q'])) { 
    echo json_encode($_GET['q']); 
    exit; 
} 
?> 
<form> 
    <input name="q" id="q"> 
    <button>Submit</button> 
</form> 
<script src="http://code.jquery.com/jquery-1.11.3.js"></script> 
<script> 
$('button').click(function() { 
    $.getJSON(
    'test.php?q=' + encodeURIComponent(q.value), 
    function(result) { 
     $('body').append($('<p>' + result + '</p>')); 
    } 
); 
    return false; 
}); 
</script> 

それ(例えばFirebugのよういくつかのツールを使って)HTTPリクエストを見て、例えば入ることに価値が言及C#報告:

GET /test/stackOverflow/test.php? Q = C%23 HTTP/1.1

'test.php?q=' + q.value代わりにレポート'test.php?q=' + encodeURIComponent(q.value)を使用しながら:/test/stackOverflow/test.phpをGET

か? Q = C HTTP /換言1.1

、それは「(ハッシュを含む)ハッシュ後のURLの任意の部分がサーバに送信されない」ことは事実だがencodeURIComponent()を使用する場合、このルールは完全にバイパスされます。

あなたがそれを示したように書くと、になるはずです。
あなたの現在の問題は、おそらくどこか他の単純なエラーです。

関連する問題