0

同じファイルAJAX functionsを呼び出す複数のスクリプトがあります。php_ajax.phpで、 whichまたはare が設定phpされていることを確認して、実行するコードを確認します。$_GET$_POST vars

私は問題を抱えています:

1)phpファイルに変数functionを渡すことができます。別の関数は、 を含む 3 つの変数を渡します。この場合、ファイルのコードの両方の部分が実行されます。これは、この方法で実行するコードを確認するためです。ajax$_GET['lang']$_GET['lang']php ajax

//FIRST PART OF CODE
if(isset($_GET['lang']) && $_GET['lang'] != ''){
   //do stuff here
}

//SECOND PART OF CODE
if(isset($_POST['lang']) && isset($_POST['sub']) && isset($_POST['body'])){
   //do stuff here
}

ONLY が設定されている場合にのみ、最初の部分を実行したいと思い$_GET['lang']ます。問題は、コードのこの部分が、他のものも$var含めて設定されている場合にも実行されることです$_GET['lng']。次のようなものを使用できることはわかっています!isset($_GET['sub']が、これは一般的な解決策ではありません$sub。のみかどうかを確認する一般的な方法はありisset($_GET['lang'])ますか?

AJAX2) でリクエストを呼び出すと、コードの最初の部分が実行されるのはなぜPOSTですか? ここでスクリプト:

$.ajax({
    url: 'ajax.php',
    cache: false,
    data: {lang: lang, sub: sub, body: area_body},
    type: 'POST',
    success: function(result){
                alert(result);
             },
    error: function(result){
                alert('Error.');
            },
});

これは、タイプが「POST」$_GET['lang'] shouldn't beに設定されている場合でも、両方のコードを実行します。... the

ありがとうございました!

4

3 に答える 3

2

データを投稿するときに、操作を区別するためにもう 1 つのパラメーターを追加します。

data: {lang: lang, sub: sub, body: area_body, type: 'add'},

そしてサーバーサイドで

if($_POST['type'] == 'add') {
     //your code
}

if($_POST['type'] == 'edit') {
     //your code
}
于 2013-08-21T12:15:02.677 に答える
1

最初の質問に関しては、次のようにすることができます。

if (count($_GET) === 1 AND !empty($_GET['lang']))

2 番目の質問についてはprint_r($_GET);、PHP ページで a を実行してみてください。

于 2013-08-21T12:16:40.137 に答える
0

1) Check if $_GET['lang'] is set, then check if it's the only $_GET defined by doing: count($_GET) == 1. In example: if(isset($_GET['lang']) && count($_GET) == 1){ ... }.

2) Debug your code with

echo "<pre>" . print_r(get_defined_vars(),true) . "</pre>";

to check if there are unwanted variables declared.

于 2013-08-21T12:15:48.743 に答える