-1

我有一个这样的ajax调用:

$.ajax({
    type: "POST",
    url: "www.something.com/login.php",
    cache:false,
    dataType: "json",
    data: { 
        username: $('#user').val(),
        password: $('#pass').val()
           },
        success: function(response) 
        {
           localStorage.setItem('user',response.results[0].user);
           localStorage.setItem('company',response.results[0].company);

        }
});

这不起作用,因为我试图连接到与我的文件不在同一个根目录的脚本,这个 PHP 文件位于外部服务器上。

我需要如何使用JSONP才能使此脚本正常工作?

4

3 回答 3

1

你当然可以。JSON 和 JSONP 的唯一区别是 JSONP 是用函数名包装的;

{ "x": "hello" } // JSON
foo({ "x": "hello" }); // JSONP.
于 2013-08-17T19:27:31.163 回答
0

您需要通过 URL 变量传递信息。

type: "GET",
url: "www.something.com/login.php?login="+username+"&password="+password,

然后在服务器端:

$_GET["username"];
$_GET["password"];

但是现在我已经告诉过你了,不要为密码和登录做这个!这是非常不安全的!!!

相反,创建一个本地 PHP 文件,与后端的其他网站共享数据。如果您不能这样做,请使用iframes并使用您的原始方法。

另一种方法是使用 cURL。cURL 允许您像在浏览器中的页面上一样登录。它不是很快,但在您没有太多控制权且没有 API 的网站上运行良好。

使用 PHP CURL 登录远程网站

于 2013-08-17T19:20:52.407 回答
0

试试这个...

$.ajax({
type: "POST",
url: "www.something.com/login.php",
cache:false,
dataType: "jsonp",
crossDomain: true,
data: { 
    username: $('#user').val(),
    password: $('#pass').val()
       },
    success: function(response) 
    {
       localStorage.setItem('user',response.results[0].user);
       localStorage.setItem('company',response.results[0].company);

    }
});
于 2013-08-19T05:41:40.290 回答