0

コントローラーにリクエストを送信する必要がありますが、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

4

2 に答える 2

0

URL の末尾に「execute」値を追加しています。「execute」はプラス記号であるため、これは単一のスペースに変換され、無効な URL として jQuery によって破棄される可能性があります。「execute」の内容を読みやすいものにしようとするかもしれません。

エラーハンドラーを少し変更することもできます。これを試してください。

error: function( jqXHR, textStatus ) {
    alert( "Request failed: " + textStatus );
});
于 2013-10-10T14:00:58.163 に答える