2011-02-04 20 views
1

ajax/jsonを介して2つの変数を送信しようとしましたが、何かが間違っていました。ajax/json経由で2つの変数を送信

最初:

var searchbox = $(this).val(); 

var datastring = 'searchword='+ searchbox; 

秒:

<?php $lang = $_GET[lang]; ?> 

AJAX/JSON:search.phpページで

$.ajax({ 
    type: "POST", 
    url: "files/search.php", 
    data: dataString+"&lang=<?php $lang ?>", 
    cache: false, 
    success: function(html) 
    { 
    ...(etc) 

私が必要:

$searchrequest = $_POST['searchword']; 

$lang = $_POST['lang']; 

$searchrequestが動作しますが、$ langは転送されたデータを使用しません。

私はこの2つのデータと他のものの配列を作成しようとしましたが、何もしませんでした。 これを行うのに役立つ人がいますか?

+0

あなたはするべきでありませんこのようにしてはいけません。それをオブジェクトとして '.ajax()'に渡すと、jQueryはすべてを適切にエンコードします。また、PHPでエコーする前に値をエンコードする必要があります。 –

答えて

2

する必要があります。

<?php $lang = $_GET['lang']; ?> 

を、あなたはecho$langに含まれる値を持っている:

data: dataString+"&lang=<?php echo $lang ?>", 

しかし、場合$lang内の文字列他の安全でないURI文字が含まれています(あなたが$_GETから取得したものではないかもしれませんが)。escpape機能:

data: dataString+"&lang=" + escape('<?php echo $lang ?>'), 

またはより良い(も適切にsearchboxをコード

また
data: {searchword: searchbox, lang: "<?php echo $lang ?>"}, 

、あなたがURLにそれを追加することによって、GET経由で変数を送信することができます

url: "files/search.php?lang=<?php echo $lang ?>", 
+0

申し訳ありませんが、ここに入力するとエコーがありません。私はそれを試しました、何もありません:) –

+0

@Filip Krstic: '$ lang'は値を持っていますか? Ajaxコードは '$ lang = $ _GET ['lang'];というファイルと同じファイルにありますか? –

+0

はい、あります。そうです。 リンク: http://www.example.com/index.php?id=1&lang=en、$ langはindex.phpページに値を持っていますが、$ .ajaxを経由したときに、いつしたいですか? search.phpの値は空です。 –

1

あなたが使用このコード:

<?php $lang ?> 

は何も印刷されません。あなたは配列フィールドにアクセスするための文字列を使用し

<?php echo $lang; ?> 
関連する問題