1

我在 php 中有一个简单的表单,它有一个用户文本框和传递文本框,我们称之为 login.php。我有另一个 php 页面,我们称之为 sendtologin.php,我想通过 jquery ajax“发送”凭据以发布到 login.php。login.php 在 server1 上,而 sendtologin.php 在 server2 上。当我尝试加载 sendtologin.php 时,我得到状态代码 0 和错误。这是我的脚本。

$(document).ready(function () {
        $.ajax({
            type: "POST",
            url: "http://server1/login.cgi",
            data: { lang_changed: "no", username: "me", password: "me" },
            success: function (data) { alert("success!"); },
            error: function (request, type, errorThrown) {
                alert("request: " + request.status + 
                      "\nrequestText: " + request.statusText +
                      "\nType: " + type + 
                      "\nException: " + errorThrown); }
        });
    });

我究竟做错了什么?

4

2 回答 2

1

您最好的选择是将登录凭据传递到您的“login.php”(如果它与您的 ajax 调用位于同一服务器上),然后使用 PHP 的 cURL 函数将发布的变量传递给您的第二个域的“login2.php”。

我经常使用这种网关/直通技术,它可以解决那些讨厌的跨域策略问题。

于 2012-09-18T22:22:40.087 回答
0

我也遇到了这个问题,问题是出于安全原因,Ajax 调用的目的是在单个服务器上工作,因此当您将调用发送到另一台服务器时,您不会收到答案,因此“成功”的方法是行不通的。这并不意味着 server1 没有收到数据,但您无法验证它是否正确。

另一种解决方案是,如果您在 server1 上的数据库上有登录信息,您可以使用 php 连接到数据库并授予对原始服务器的访问权限,然后您可以根据该数据库连接进行所有 ajax 调用。

于 2012-09-18T22:28:18.953 回答