【问题标题】:jQuery and Ajax - cannot POSTjQuery 和 Ajax - 无法发布
【发布时间】:2013-01-26 21:10:54
【问题描述】:

我正在尝试使用已知的用户名和密码登录网站,并从该网站获取该网站上特定用户帐户的一些数据。为此,我正在使用 jQuery 和 Ajax。这是我的代码:

$.ajax({
async: false,
cache: false,
type: 'POST',
dataType: 'json',  // json...just for example sake
data: ({
    'login_username': username,
    'secretkey': password
}),
url: 'https://mail.someserver.com/src/redirect.php',
success: function (data) {
    alert("SUCCESS!")
    if (data === '1') {  // server returns a "1" for success
        // success!
        // do whatever you need to do
    } else {
        // fail!
    }
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
    // something went wrong with the request
    alert("Failed!");
}

});

我已经在网上进行了搜索,并且我知道浏览器不允许跨服务器 ajax 调用以防止安全问题,但我已经尝试使用“jsonp”作为 dataType 无济于事:(

那么,我做错了什么?

【问题讨论】:

  • 您希望在 php 文件中接收什么数据类型?
  • 请查看更新后的代码。请注意,启动 url:mail.someserver.com/src/… 工作正常(成功登录用户)
  • 调试控制台有输出吗? (在Chrome上按F12打开开发者工具,在控制台空间右击,勾选“Log XMLHttpRequests”)。
  • 使用 jsonp 你必须使用回调函数。 geekality.net/2010/06/27/…
  • @Zorayr 我正在制作一个实现上述代码的 Chrome 扩展程序,所以我不确定控制台是否会显示任何内容。调用运行上述代码的 background.js 的 background.html 控制台窗口什么也没有显示:i.imgur.com/Wuewwkl.png

标签: javascript jquery ajax post get


【解决方案1】:

确保您的url 没有破坏same origin policy——也就是说,来自客户端的请求不能从不同域的服务器请求数据(此规则有例外,命名为CORS ,但这需要您对正在与之通信的服务器/应用程序进行更改)。

解决您的问题的方法是从某个服务器端脚本发出请求,然后让您的客户端应用程序根据为网络提供应用程序的同一台机器查询该脚本。

【讨论】:

【解决方案2】:

我的错不在上面的代码,我的错是在我的清单文件中(我正在构建一个 Google Chrome 扩展程序)我没有设置适当的权限 (https://*)。

很抱歉让您失望了!

【讨论】:

    猜你喜欢
    • 2023-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-09
    • 1970-01-01
    • 2018-12-02
    • 2016-06-04
    • 1970-01-01
    相关资源
    最近更新 更多