0

我有一个脚本,AJAX functions其中有多个调用同一个php_ajax.php文件。在php我检查要执行的代码上,通过检查 which $_GETor$_POST vars被设置。

我有问题:

1)我有一个function传递给ajaxphp文件的变量$_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.');
            },
});

这会执行这两个代码,即使$_GET['lang'] shouldn't beisset... the类型:'POST'`。

谢谢!

4

3 回答 3

2

在发布数据的同时添加一个参数来区分操作。

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']))

对于您的第二个问题,请尝试print_r($_GET);在您的 PHP 页面上进行操作。

于 2013-08-21T12:16:40.137 回答
0

1)检查是否$_GET['lang']设置,然后检查它是否是唯一$_GET定义的:count($_GET) == 1。例如:if(isset($_GET['lang']) && count($_GET) == 1){ ... }.

2)调试你的代码

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

检查是否声明了不需要的变量。

于 2013-08-21T12:15:48.743 回答