jQuery ajax抛出错误

时间:2013-10-10 13:50:54

标签: php jquery ajax

我需要向我的控制器发送请求,但是ajax投掷和错误。我似乎无法弄清楚为什么。这是代码

HTTPS在定义常量之前,我不能写在这里!

        $("input").on("click", function(){
         var elem = $(this).attr("id");
         var execute;

         if( $(elem).prop('checked') == true ){
             execute = '+';
         } else {
             execute = '-';
         }
            $.ajax({
                type:'POST',       
                url: HTTPS+'/path/to/controller/ctlAccess.php?do='+execute,
                data: {id:elem},
                success: function(data) {
                            console.log(data);
                        },
                error: function(){
                            console.log("An error occurred: " + status + "nError: " + error); //AND ERROR: An error occurred: [object Object]nError: error
                        }
            });
        });
    });

这是控制器:

    $SysData = new SysTables;

if ($_GET["do"] == "-") {
    $userId = preg_match('/[0-9]*(?=p)/', $_POST['id']);
    $pageId = preg_match('/(?<=p)[0-9]*/', $_POST['id']);
    $result = $SysData->deleteAccess($userId, $pageId);

$data = "ACCESS FOR ". $_POST['id']." DELETED";
    echo $data;
}

我认为请求甚至没有控制器!我实际上并不知道这是错误。但是文件路径是正确的,而elem获得ir值的部分也是如此,所以我不知道错误在哪里!?请帮助,thx

2 个答案:

答案 0 :(得分:1)

您应该在AJAX调用中指定预期的dataType,如下所示:

dataType: 'HTML'

我还建议切换到所有POST数据

所以这是整个AJAX的事情(在后端更改你的控制器以使用$_POST['do']):

$.ajax({
    type:'POST',       
    url: HTTPS+'/path/to/controller/ctlAccess.php',
    data: {
               'id':elem,
               'do':execute // do might be a reserved word so just encase it in quotes to force it as a string
          },
    dataType: 'HTML',
    success: function(data) {
        console.log(data);
    },
    error: function(jqXHR, textStatus) {
        alert( "Request failed: " + textStatus );
    }
});

我想知道HTTPS究竟是什么。只要您不想提出跨域请求,那么您真的不应该需要它。

如果您正在尝试制作跨域请求,那么它就是一个单独的野兽。

答案 1 :(得分:0)

您在URL的末尾追加“执行”值。由于“execute”是一个加号,它将被转换为单个空格,并可能被jQuery作为无效URL丢弃。 您可能会尝试使“执行”内容更具可读性。

您可能还想略微修改错误处理程序,试试这个:

error: function( jqXHR, textStatus ) {
    alert( "Request failed: " + textStatus );
});