Jquery跨域问题

2023-11-23

我正在尝试访问另一个域中的网络服务,但它没有返回任何内容。后来我发现这是由于跨域访问造成的问题。

网上查了很多文章,但没有一篇是像我这样的新手能读懂的。 :(

有人可以帮助我如何访问网络服务吗?

以下是我的代码。

//variables for Add Contacts
var addAccountServiceUrl = 'http://crm.eyepax.net/organization.asmx?op=WriteOrg'; // Preferably write this out from server side
var OrganizationID=123;
var ParentID=123    ;
var AccountManagerID="123";
var OrganizationName="Testapple";
var IncorporationNo="23";
var PostAddress="asdfklj asldfj";
var CountryID="LK";
var VisitAddress="asldkf asldkf asldfas dfasdf";
var VisitCountryID="LK";
var VisitSwithboard="242344";
var VisitFax="234234";
var Www="http://www.eyepax.com";
var Active=true;
var RegBy=345345345345;
var ConfigurationCode="28BC9CC3@BFEBFBFF0001067A";
var Flag=1;
var LicenceOrganazationID=1;
var sErr;

function addContact()
{
//this is to be commented soon! 
alert("function called");
//update the webservice soapmesg

var soapMessage =
'<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> \
<soap:Body> \
    <WriteOrg xmlns="http://eyepax.crm.com/Organization"> \
      <OrganizationID>'+OrganizationID+'</OrganizationID> \
      <ParentID>'+ParentID+'</ParentID> \
      <AccountManagerID>'+AccountManagerID+'</AccountManagerID> \
      <OrganizationName>'+OrganizationName+'</OrganizationName> \
      <IncorporationNo>'+IncorporationNo+'</IncorporationNo> \
      <PostAddress>'+PostAddress+'</PostAddress> \
      <CountryID>'+CountryID+'</CountryID> \
      <VisitAddress>'+VisitAddress+'</VisitAddress> \
      <VisitCountryID>'+VisitCountryID+'</VisitCountryID> \
      <VisitSwithboard>'+VisitSwithboard+'</VisitSwithboard> \
      <VisitFax>'+VisitFax+'</VisitFax> \
      <Www>'+Www+'</Www> \
      <Active>'+Active+'</Active> \
      <RegBy>'+RegBy+'</RegBy> \
      <ConfigurationCode>'+ConfigurationCode+'</ConfigurationCode> \
      <Flag>'+Flag+'</Flag> \
      <LicenceOrganazationID>'+LicenceOrganazationID+'</LicenceOrganazationID> \
    </WriteOrg> \
  </soap:Body> \
</soap:Envelope>';

$.ajax({
url: addAccountServiceUrl,
type: "POST",
dataType: "xml",
data: soapMessage,
success: endAddContact,
error: function(jqXHR, textStatus, errorThrown) {alert("failure"); console.log(textStatus);console.log(errorThrown);},
contentType: "text/xml; charset=\"utf-8\""
});

return false;
}

function endAddContact(xmlHttpRequest, status)
{
    console.log(xmlHttpRequest);
    console.log(status);
    alert("webservice called!");
 $(xmlHttpRequest.responseXML)
    .find('WriteOrgResponse')
    .each(function()
 {
   var orgres = $(this).find('WriteOrgResult').text();
   var error = $(this).find('vstrError').text();

   alert(orgres +' -'+ error);
 });

 var a = $(xmlHttpRequest.responseXML).find('WriteOrgResult');
 var b = $(xmlHttpRequest.responseXML).find('vstrError');
 console.log("a"+a.text());
 console.log("b"+b.text());
}

浏览器不允许跨域 AJAX 调用。只能跨域JSONP请求被允许。

要使用 JSONP 请求,您必须更改dataType财产给jsonp。但这意味着您不能请求 XML,而只能请求 JSONP。


关于 JSONP 的一些信息:

The <script>tag绕过了跨域限制。这意味着您可以使用该标签从其他服务器获取数据。该标签不支持所有类型的语言,因此不支持 XML。

JSONP 基本上是 JSON,但有一个函数调用,如下所示:

functionname({"property":"value"})

我可以看到你想知道:“那个函数名在那里做什么?”

这正是与 JSON 的区别。因为函数被包裹在它周围,所以您可以使用实际数据!

<script type="text/javascript">
var functionname = function(json) {
    alert(json.property);
}
</script>
<script type="text/javascript" src="http://www.domain.com/jsonp"></script>

如果您将第二个脚本标记替换为响应内容,则一切都有意义:

<script type="text/javascript">
var functionname = function(json) {
    alert(json.property);
}

functionname({"property":"value"});
</script>

不管你相信与否,这个微小的差异实际上使我们能够使跨域请求更加安全。

另一个关于 JSONP 的主题

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

Jquery跨域问题 的相关文章

随机推荐

  • 我的 php 网站被作为图像上传的代码攻击了..?

    昨天我的网站被收录了 攻击者将index php 文件更改为他们自己的 包含他们所有的荣耀消息和问候语 我已将此情况通知托管公司 我们在专用服务器上运行 就我而言 我正在尝试修复任何似乎是原因的问题 因为我仍然无法指出我们的问题到底是如何发
  • 将 HTML 编码从 UTF-8 切换到 UTF-16 时可能会出现什么问题?

    对于 HTML 编码从 UTF 8 更改为 UTF 16 有何影响 我想知道您对这个问题的想法 在做出这样的改变之前我需要考虑一些事情吗 注意 由于我需要处理大量的日文和中文文本 所以很感兴趣 我能想到一些会出错的事情 您必须在 HTTP
  • Proguard:避免与预混淆的库 JAR 发生命名冲突

    看来 Proguard 在重命名 重新打包类时并没有尝试避免与库 JAR 中的类发生命名冲突 这是正确的 还是我配置不正确 我正在混淆使用最新 Google AdMob SDK 的 Android 应用程序 之前我使用旧的 AdMob SD
  • 如何通过 Apache Camel 调用 RESTful 服务?

    我目前正在使用 HTTP 方法来调用某些 URL 这将产生 JIRA 问题 现在我想使用 Apache Camel 我该如何使用它 我需要通过Camel调用以下链接 http localhost 8080 rest api 2 projec
  • 如何在 POSIX sh 中获取脚本目录?

    我的 bash 脚本中有以下代码 现在我想在 POSIX sh 中使用它 我该如何转换它 DIR cd dirname BASH SOURCE 0 gt dev null pwd The POSIX shell sh counterpart
  • 在react/redux应用程序中隐藏api url(代理)

    我担心我的 React Redux 应用程序的安全性 因为我的 api url 在捆绑的 app js 文件中向公众公开 我一直在研究这个 一些开发人员以某种方式代理它 即我可以使用而不是使用我的 api urlapi 每当我与类似的库进行
  • 如何查找加载到进程中的DLL及其位置等

    我使用过 Process Explorer 但我忘记了另一个实用程序 它可以让您查看进程从何处加载 图像文件 以及内存中的 dll 以及它们从何处加载 Process Explorer 对我来说仅适用于托管程序集 还有什么是原生的吗 Pro
  • 移动 numpy 数组中的元素

    这个问题在底部包含它自己的答案 使用预先分配的数组 后续行动来自这个问题几年前 numpy 中有一个规范的 shift 函数吗 我没有看到任何东西文档 这是我正在寻找的简单版本 def shift xs n if n gt 0 return
  • 三元表达式中的 NullPointerException 为 null Long

    为什么下面这行代码会产生NullPointerException Long v 1 2 Long MAX VALUE Long null 据我所知 正在执行拆箱操作null 但为什么 注意 Long v Long null 不产生异常 因此
  • 在 Django 模型中使用 UUID 作为主键(通用关系影响)

    由于多种原因 我想在我的一些 Django 模型中使用 UUID 作为主键 如果我这样做 我仍然可以使用通过 ContentType 使用通用关系的外部应用程序 例如 contrib comments django voting 或 dja
  • CNN-LSTM 的批量归一化层

    假设我有一个这样的模型 这是时间序列预测的模型 ipt Input data shape 1 data shape 2 1 x Conv1D filters 10 kernel size 3 padding causal activatio
  • Azure Functions 应用程序在发布后为只读

    我有几个 Azure Functions 应用程序 c javascript 和 python 一段时间后它们都被随机设置为只读模式 奇怪的是 在这之前 这 3 个功能应用程序中只更新了其中一个 我知道这不一定是问题 但我希望能够从门户进行
  • 动态创建字段和方法

    我想为给定的类添加新字段 变量 和封装方法 例如 班级名称 Student 没有任何字段 如下所示 public class Student implements Serializable 然后在我的应用程序中创建一个实例 Student
  • HTML5 音频事件“进度”未触发

    我正在构建一个 a v html5 流媒体网络应用程序 这个问题涉及项目的音频部分 但我确信当我开始处理视频部分时我会遇到类似的情况 我的目标设备是 iPad 的 safari 浏览器 因此我必须这样做 html5 播放效果很好 但我有一个
  • 检查相交矩形的更快方法?

    除了我的 Rect 类 public class Rect public int x public int y public int w public int h public Rect int x int y int w int h th
  • 使用 JavaScript 正则表达式将数字 HTML 实体替换为其实际字符

    我正在尝试使用 JavaScript 和正则表达式将数字 HTML 实体替换为其实际的 Unicode 字符 例如 foo 39 s bar foo s bar 这是我到目前为止得到的 foo 39 s bar replace s g 1
  • 从 BaseAdapter 调用 notificationDataSetChanged 时 ListView 不会更新

    当底层数据发生变化时 我很难更新 ListActivity 我正在使用派生的 vom BaseAdapter 的自定义 列表 适配器 CustomListAdapter 来使用自定义列表元素 CustomListElement 填充 Lis
  • Erlang 是否总是在同一节点上的进程之间复制消息?

    演员消息传递语义的忠实实现意味着消息内容是从logical观点 即使对于不可变类型也是如此 消息内容的深度复制仍然是执行者模型实现的瓶颈 因此为了性能 某些实现支持零复制消息传递 尽管从程序员的角度来看它仍然是深度复制 是否实现了零拷贝消息
  • 如何等待网络流有数据可供读取?

    我的应用程序中有一个工作线程负责三件不同的事情 对其中两个作业的请求出现在我编写的队列中 当网络流上出现请求时 另一个作业就会被激活 我希望我的工作线程在没有工作要做时等待 这对于两个队列来说很容易 因为它们公开了一个 ManualRese
  • Jquery跨域问题

    我正在尝试访问另一个域中的网络服务 但它没有返回任何内容 后来我发现这是由于跨域访问造成的问题 网上查了很多文章 但没有一篇是像我这样的新手能读懂的 有人可以帮助我如何访问网络服务吗 以下是我的代码 variables for Add Co