【问题标题】:Why does this ajax call fail?为什么这个ajax调用失败?
【发布时间】:2012-03-14 19:09:56
【问题描述】:

我在 http://www.mywebsite.com 上,我对 http://myownajax.projects.it/folder/mypage.aspx 进行了跨域 ajax 调用(使用 jQuery):

$.ajax({
    url: 'http://myownajax.projects.it/folder/mypage.aspx ',
    success: function(data) {
        console.log(data);
    }
});

它很容易打印“Hello”:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="mypage.aspx.cs" Inherits="folder_mypage" %>

Hello

但实际上我收到 200 OK 错误。为什么?我该如何解决?

【问题讨论】:

    标签: c# jquery .net ajax cross-domain


    【解决方案1】:

    必须指定dataType:"jsonp",跨域ajax只支持type:"GET"。不允许使用type:"POST"

    【讨论】:

    • 有效!现在我得到“你好没有定义”。我认为我需要转换?
    • 无法从其他域获取 HTML。 FYR
    【解决方案2】:

    跨站脚本(又名 XSS)被浏览器阻止,因为它存在安全风险。

    如果您必须从另一个 URL 检索数据,则必须使用 JSONP 格式和仅GET 请求。

    试试这个:

    $.ajax({
        url: 'http://myownajax.projects.it/folder/mypage.aspx',
        type: 'get', // this is optional as 'get' is the default.
        datatype: 'jsonp',
        success: function(data) {
            console.log(data);
        }
    });
    

    【讨论】:

    • 它说“Hello is not defined”:我需要转换为 JSON?还是什么?
    • 你是如何访问变量的?我假设您使用的代码与您发布的代码不同,因为您会收到不同的错误。
    • 更改您的 .aspx 页面以返回可解析为 JSON 格式的字符串,在您的示例中为 ["Hello"]
    • 嗯,其实我需要发一整页给客户端!我该怎么办?
    • 最好为此打开另一个问题 - 不要忘记将这个问题标记为已接受;)
    猜你喜欢
    • 2020-09-13
    • 2014-11-13
    • 1970-01-01
    • 1970-01-01
    • 2016-08-27
    • 1970-01-01
    • 1970-01-01
    • 2021-04-26
    • 2012-07-15
    相关资源
    最近更新 更多