jQuery $.ajax 使用 JSONP 进行跨域调用,返回状态 200,但正在调用错误函数而不是成功

2023-12-14

我的 Web 应用程序正在尝试访问属于不同域的另一台服务器的信息。由于它是跨域ajax调用,因此我使用“dataType”作为“JSONP”而不是JSON。

现在,在 WebInspector-> Network 选项卡中,我看到请求已成功并且已填充响应。但 success() 函数从未被调用。它总是调用状态 = 200 的错误函数。

由于它是 JSONP 请求,jQuery 会附加“callback=?”到 URL 末尾并且回调方法从未被调用,即使在获得有效响应之后也是如此。不确定出了什么问题?

$(document).ready(function() {
    // When you click the Get Instances button:
    $('#getInstances').click(function(){
        $.ajax({
            type: "GET",
            url: "http://178.28.167.221:8080/us-east-1/instance/list.json",
            contentType: "application/json; charset=utf-8",
            accept: "application/json",
            crossDomain: "true",
            headers: {'Access-Control-Allow-Origin','*'},
            dataType: "jsonp",
            success: function(msg) {
                result = JSON.stringify(msg);
                var obj = $.parseJSON(result);
                console.log(obj);
                $('#instancesTable').append('<tr><td>' + obj.autoScalingGroupName + '</td><td>' + obj.amiId + '</td><td>' + obj.instanceId + '</td><td>' + obj.instanceType +'</td></tr>');                                     
            },
            error: function(xhr, ajaxOptions, thrownError, textStatus, responseText) {
                console.log(name + ' environment failed with error: ' + xhr.status + "  " + thrownError);

                var errorMessage = "Error";
                if (xhr.status == 0) {
                    errorMessage = "Can't Connect";
                }
            }
        });
    });
});

我还通过在我的 ajax 请求中包含以下内容进行了验证:

        jsonp: 'callback',
        jsonpCallback: 'jsonpCallback'

并定义回调函数如下:

       function jsonpCallback(data){
         alert("jsonpCallback");
       }

即使请求成功并且服务器可以提供响应(显示在 WebInspector 的“网络”选项卡中),jsonCallback 也从未被调用。

来自服务器的响应是 JSON 对象的数组。 [{JSON1},{JSON2} ..]

注意:我尝试将 contentType 更改为“application/javascript”,因为响应是 JSON 对象数组。但没有任何效果:(


我有类似的问题并解决了。 您还没有指定您的服务是什么。 就我而言,它是一个 WCF 服务。

我必须添加这个。

   <webHttpBinding>
        <binding name="webHttpBindingWithJsonP" crossDomainScriptAccessEnabled="true" />
      </webHttpBinding>

并在服务中将绑定配置设置为上述

i.e : bindingConfiguration="webHttpBindingWithJsonP"

这解决了问题。它们可能是在 PHP 或其他平台上实现相同目标的类似方法

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

jQuery $.ajax 使用 JSONP 进行跨域调用,返回状态 200,但正在调用错误函数而不是成功 的相关文章

  • 如何防止字段的角度自动修剪?

    有没有什么方法可以防止整个应用程序中字段的角度自动修剪 我知道我可以使用 ngTrim 指令防止指定字段出现这种情况 但将此指令添加到应用程序中的所有文本字段看起来不太好 有什么方法可以对 Angular 模块中的所有字段执行此操作吗 这是
  • Backbone.js 和本地存储。必须指定“url”属性或函数

    我正在提高有关 Backbone js 的知识 并从教程中获取了此代码示例 http bardevblog wordpress com 2012 01 16 understanding backbone js simple example
  • 根据路由动态加载 Node.js 模块

    我正在使用 Express 在 Node js 中做一个项目 这是我的目录结构 root start js server js lib api user getDetails js user register js The lib api
  • 创建一个通用函数以将其用于其他数据

    我正在制作一个项目列表 并希望随着数量变化计算其值 但如何使该函数通用以便我可以将它用于所有行 你能建议一些最好和简单的方法 但请记住我想这样做仅限 JavaScript table thead tr th Name th th Quant
  • Javascript 搜索并替换包含方括号的字符序列

    我正在尝试在字符串 Nationality EN ESP 中搜索 EN 我想从字符串中删除它 所以我使用替换方法 代码示例如下 var str Nationality EN ESP var find EN var regex new Reg
  • 如何更改 angularjs $http.jsonp 的标头

    我读了document http docs angularjs org api ng 24http 但我想我一定是误解了 http defaults headers jsonp Accept application json http js
  • 如何在 html5 中加载部分 html? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 询问我们的问题推荐或查找工具 库或最喜欢的场外资源与 Stack Overflow 无关 因为它们往往会吸引固执己见的答案和垃圾邮件 反而
  • 是否有跨浏览器的 jQuery contentEditable 库? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个 jQuery 插件 库 它可以使 contentEditable 属性在所有主要浏览器中正常工作 我什至可以不用 IE6
  • 如何根据父网格的标题复选框选择/取消选择所有子复选框

    我正在开发一个 Web 应用程序 其中包含嵌套在另一个数据网格中的数据网格 在父网格中 我在标题模板中有一个复选框 在子网格中的项目模板中有另一个复选框 功能是 1 如果我单击父复选框 则应检查子网格中的所有项目 反之亦然 2 我的子网格中
  • 如何在 AngularJS 中设置选择选项中的文本格式?

    我有以下 json 对象 scope values id 2 code Code 1 name Sample 1 id 4 code Code 2 name Sample 2 id 7 code Code 3 name Sample 3 在
  • 使用 Perl 循环 JSON [重复]

    这个问题在这里已经有答案了 我是 Perl 的新手 想要循环这个 JSON 数据并将其打印到屏幕上 我怎样才能做到这一点 arr Year 2012 Quarter Q3 DataType Other 3 Environment STEVE
  • 静态资源和非静态资源有什么区别?

    我主要是一名前端开发人员 设计师 但最近我一直在探索端到端解决方案 昨天 我使用平均堆栈完成了一个 TODO 应用程序 并想开始探索我的 VPS 的部署选项 话虽这么说 有人建议我使用 nginx 作为反向代理来提供静态资源 不幸的是 我陷
  • jQuery 仅附加一次

    所以我有这个 jQuery document ready function var nav nav var logo img src img logo png window scroll function if this scrollTop
  • codemirror - 在编辑器内检测并创建链接

    我正在使用 codemirror 配置为显示 javascript 我有这样的代码 var ref http www example com test html var ref2 http www example com test2 htm
  • JSON 数据的动态表单(不同类型)

    我尝试使用 JSON 中的数据在 AngularJS 中创建动态表单 我有这个工作 HTML p p
  • 返回语句后的声明

    function f return f1 function f1 return 5 f returns 5 为什么这有效 之后声明局部函数有什么好处return 这是好的做法吗 它之所以有效 是因为函数声明都是由解释器在第一次传递时评估的
  • 使用与 eval 相反的括号表示法

    我有以下内容 var module function console log module ran var someString module string TypeError object is not a function eval s
  • 理解“窗口”对象[重复]

    这个问题在这里已经有答案了 可能的重复 JS 窗口全局对象 https stackoverflow com questions 10035771 js window global object 如何window对象工作 我知道它是顶级对象并
  • Google Maps JavaScript API v3 方向功能

    我使用 Google Maps js API v3 我可以根据路径点显示方向this http code google com intl hu apis maps documentation directions Waypoints 我想要
  • 未终止的字符串文字

    我有一个 php 脚本 可以在我的服务器上上传 mp3 文件 我使用 上传 有一个事件 onSelect 文档 http www uploadify com documentation events onselect 当文件上传时调用 使用

随机推荐

  • 如何将 Robomongo 连接到 MongoDB

    我的运行系统中有 MongoDB 和 Robomongo 并且我使用 Robomongo 作为客户端 我已经在另一个系统上安装了 MongoDB 我将其视为服务器 并且我想将我的系统 作为客户端 的 Robomongo 连接到另一个系统 服
  • 将值添加到选定的多选

    我想知道是否可以动态添加新值选择 js多重选择 类似于标记的工作方式 我在另一个看到过SO post用户说这是可能的 他链接到一个example and a fork在 github 上 但我在实现这些方面遇到了一些困难 源代码是用 Cof
  • 使用开源库时,我们应该针对源代码还是二进制文件进行编译? [关闭]

    Closed 这个问题是基于意见的 目前不接受答案 在项目中使用开源库 例如 SharpPcap 或 FakeItEasy 时 我们应该将源代码添加到解决方案中还是针对 DLL 进行编译并将它们放在解决方案中的目录中 您应该使用二进制文件进
  • 检查应用程序是否在前台或后台运行(使用同步适配器)

    我知道这是一个重复的问题 但我查遍了所有地方 找不到适合我的解决方案 所以 我有一个从 TMDB API 获取电影数据的应用程序 它使用同步适配器按页获取它 基本上它运行得很好 除非在应用程序打开且用户不在第一页时运行同步适配器的定期同步
  • MySQL 服务器在 Perl 爬行期间消失了

    我使用 WWW Mechanize 库来获取 URL 的内容并将其数据保存到 mysql 表中 但是当页面内容太大时 会出现以下错误消息 DBD mysql st 执行失败 MySQL 服务器已消失 F crawling perl test
  • 正则表达式删除字符串中的最后一个单词+附加字符

    我从服务器获取一个字符串 我必须使用正则表达式来解析它 我知道如何使用字符串函数 String split 等 来做到这一点 但不知道如何使用正则表达式 这是家庭作业要求中的 字符串看起来像这样 12345
  • 为什么该决策树每一步的值之和不等于样本数?

    我正在阅读有关决策树和装袋分类器的内容 并且我试图展示装袋分类器中使用的第一个决策树 我对输出感到困惑 from sklearn model selection import train test split from sklearn da
  • 为什么我收到 You do not have permission to call SpreadsheetApp.openById?

    我们有两张 AL 表 本地的和国家的 我正在尝试获取它 以便当我们当地的 AL 日历 完成时 数据会复制到国家日历中 检查编辑的单元格是否位于国家电子表格中某人的行中 然后将其复制到国家电子表格上的相应行中 我不断得到 您无权调用 Spre
  • 如何在 Android 中制作自定义键盘? [关闭]

    Closed 这个问题需要多问focused 目前不接受答案 我想做一个定制键盘 我不知道如何使用 XML 和 Java 来做到这一点 下图是我想做的键盘模型 它只需要数字 系统键盘 此答案告诉您如何制作可在用户安装在手机上的任何应用程序中
  • 快速字节校验和

    我有一个非常棘手的问题 我使用 iOS 设备将字节数组发送到 ble 设备 led 灯 效果很好 我有一个所有命令的文档 但中文翻译得很差 整个字节包的构建如下 命令前面 1字节 命令包长度 1字节 命令的ID 1字节 命令的控制部分 1字
  • 如何向我的 Facebook 登陆选项卡添加“喜欢”按钮?

    我的 Facebook 页面经过设置 以便向尚未 喜欢 该页面 并尝试查看该页面 的用户显示特定选项卡的内容 而不是默认的 墙 视图 这些用户到达的选项卡包含我制作的应用程序 这是一个简单的应用程序 列出了有关业务的信息 该应用程序正在使用
  • 鼠标滚轮滚动工具条菜单项

    我有一些包含许多菜单项的菜单 鼠标滚轮不会滚动它们 我必须使用键盘箭头或单击顶部和底部的箭头 是否可以使用鼠标滚轮滚动工具条菜单项 谢谢 您可以使用此类在应用程序范围内启用它 public class DropDownMenuScrollW
  • 使用架构方法在 Mongoose For 循环中保存项目

    如果我附加任何额外的验证方法 我在保存通过 for 循环运行的项目时遇到问题 基本上 我正在构建一个 Instagram API 应用程序 允许编辑者删除不雅的照片 照片会以 20 张为一组从 Instagram 中提取并展示给编辑 如果编
  • Discord.js 机器人欢迎会员,分配角色并向他们发送 DM

    所以当新成员加入时Guild 不和谐服务器 机器人应该在某个频道 ID 766716351007686696 发送消息 向他们发送直接消息 然后添加角色 Human Bean 这是我现在拥有的代码 它不起作用 底部有错误 client on
  • JavaScriptSerializer [ScriptIgnore] 对虚拟属性无效?

    我返回了 Json myObj 操作结果 myObj 的类型为 Badge Badge 仅有的两个可能导致序列化程序循环的对象是 public class Badge public Badge public Badge String Nam
  • CUDA Stream 压缩:理解概念

    我正在使用 CUDA Thrust CUDPP 据我了解 在流压缩中 数组中的某些项目被标记为无效 然后 删除 那么 移除 到底是什么意思呢 假设原始数组A长度为 6 如果有 2 个元素无效 无论我们提供什么条件 则 系统是否创建newGP
  • 使用 WAMP 新方法连接 PHP 和 SQL Server

    在独立的 PHP 和 SQL 服务器之间创建连接的最佳方法是什么 两台服务器 服务器 a SQL 和服务器 b PHP 请注意 我使用的是 wamp 我读了一些像下面这样的文章但我想知道有没有新主意 我测试了这段代码 效果完美 try us
  • 如何在新窗口中打开表单结果?

    我的网页上的 iframe 中有一个表单 单击提交按钮后 将在包含我的网页的窗口中查看结果 如何在新窗口中打开结果 你能调整表单html本身吗
  • 比较php中的两个数组

    我使用这个代码 new array 123 gt a 456 gt b old array 123 gt a 456 gt b 那么 new数组变成这样 new array 456 gt b 123 gt c 789 gt e 正如你看到的
  • jQuery $.ajax 使用 JSONP 进行跨域调用,返回状态 200,但正在调用错误函数而不是成功

    我的 Web 应用程序正在尝试访问属于不同域的另一台服务器的信息 由于它是跨域ajax调用 因此我使用 dataType 作为 JSONP 而不是JSON 现在 在 WebInspector gt Network 选项卡中 我看到请求已成功