【问题标题】:Is it possible to submit a POST, not AJAX, and get a JSON response in jQuery?是否可以提交 POST,而不是 AJAX,并在 jQuery 中获得 JSON 响应?
【发布时间】:2014-08-02 14:19:42
【问题描述】:

我正在尝试向另一个站点提交表单帖子并收集它显示的 JSON 响应。我正在使用以下内容,但不确定如何获得响应。

$("form input[type=submit]").on("click", function (ev) {
    var result = '';
    ev.preventDefault();
    $('#myform').submit();
});

我会使用.post().ajax();但是,最好我能说我不能使用它,因为我得到了错误......

XMLHttpRequest 无法加载 http://example.com/api/login/。请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,Origin 'localhost' 不允许访问。

编辑:

$('#mybutton').click(function () {
        $.ajax({
            url: "http://example.com/api/login/",
            type: "POST",
            data: "name=user%40domain.com&pass=apassword",
            dataType: "jsonp",
            success: function (result) {
                alert("success");
            },
            error: function (jqXHR, tranStatus, errorThrown) {
                alert("error");
            }
        });

    });

【问题讨论】:

  • 我认为真正的问题是你为什么要这样做?
  • @frenchie,我正在尝试使用另一台服务器进行身份验证。他们要求我向他们发送用户名和密码,然后他们进行身份验证并返回一个 ID。

标签: jquery asp.net json vb.net post


【解决方案1】:

您可以将表单提交到其他网站,但您无法访问您页面中的结果,除非目标网站允许(并且您使用的是ajax)。 Same Origin Policy 正好防止了这种情况。目标站点可以允许您通过 Cross-Origin Resource Sharing 访问。

您可以提交表单并完全放弃控制权(普通表单提交),您可以使用ajax 并遵守 SOP(除非网站使用 CORS 允许这样做) .

【讨论】:

  • 感谢您的信息。我只是想了解问题出在哪里。为什么我可以从hurl.it 之类的站点发起 POST 并收到所需的结果?当我尝试使用 .ajax() 时,它就像我没有指定任何参数一样。我将用我在那里尝试的内容更新原始问题。
  • @moopasta: hurl.it 可能是在服务器端进行请求,而不是在客户端(例如,你说“去获取这个”,它会向它的服务器发送一个请求说“去获取这个" 并且它服务器执行实际查询)。 SOP 仅适用于客户端。
  • 完美!明白了,谢谢帮助!不知道你第一次说的时候我没听懂。 ;-/
  • @moopasta:我没有提到客户端位。 :-) 最好的,
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-09-22
  • 2011-03-11
  • 1970-01-01
  • 2014-10-24
  • 1970-01-01
  • 2015-05-15
  • 2018-11-26
相关资源
最近更新 更多