0

私はすでにこの問題に数時間を費やしていて、解決策を見つけることができません。私はウェブページ(kohana 3.2)で次のサービスを利用しています:

public function action_test() {
    $data = file_get_contents('php://input');
    $json = json_decode($data);

    $t = array();
    $t[Utils::$KEY_LOGIN]       = isset($json->login) ? $json->login : arr::get($_POST, Utils::$KEY_LOGIN, null);
    $t[Utils::$KEY_PASSWORD]    = isset($json->password) ? $json->password : arr::get($_POST, Utils::$KEY_PASSWORD, null);

    $returned = array("success" => true);
    $returned = array_merge($returned, array("login" => $t[Utils::$KEY_LOGIN]));

    $this->auto_render = FALSE;
    ob_clean();
    $this->request->headers['Content-Type'] = "application/json";
    $this->response->body(json_encode($returned));
}

そして、サービスに尋ねるフォーム:

<html>
<head>
    <meta charset="utf-8" />
    <script type="text/javascript" src="//media/js/jquery-1.6.2.min.js">    </script>
    <script type="text/javascript" src="//media/js/jquery-ui.min.js"></script>
    <script type="text/javascript">
        $(document).ready(function() {
            $("#login_sb").click(function() {
                //var action = 'http://www.aaa.pl/clientservices/test';
                var action = "http://localhost/aaa/clientservices/test";
                $.ajax({
                    url : action,
                    type : "post",
                    dataType : "json",
                    cache : "false",
                    timeout: 8000,
                    data : {
                        'login': 'login@wp.pl'
                    },
                    success : function(data) {
                        alert(data);
                        if(data.success) {
                            alert(data.login);
                        }
                    } 
                });
// 
                return false;
            });
        });

    </script>
</head>
<body>
    <form id="login_form" method="post">
        <input type="submit" value="login" id="login_sb"/>
    </form>

</body>

ローカルサービスに電話すると、すべて問題なく動作します。しかし、Ajaxでリモートで呼び出そうとすると、機能しません。フォームを手動で送信した場合にも機能します。助けてください、何が悪いのか新しいアイデアがないからです。

4

1 に答える 1

0

別のドメインから AJAX リクエストを呼び出そうとしている可能性がありますか?

この URL で ajax リクエストを呼び出そうとしている場合: 'http://www.aaa.pl/clientservices/test'

ローカルのセットアップからエラーが発生します。ajax リクエストは同じドメインから行う必要があります。

ファイル 1 つのローカルホストは、www.aaa.pl に対して ajax リクエストを行うことができません。これは、別のドメインであり、javascript のセキュリティ上の問題であるためです。

于 2012-09-18T11:16:50.043 に答える