jQuery getScript跨域

本文详细介绍了如何使用 jQuery 实现 AJAX 跨域调用的技术,包括前端选择器动态加载数据并展示的方法。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>jQuery Ajax跨域调用|梦三秋</title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script>
</head>
<body>
<h1><a href=" http://www.skygq.com/2011/03/04/jquery-ajax跨域调用">jquery-ajax跨域调用</a></h1>

 <img id="ajax_image" src="http://www.skygq.com/ci/css/img/ajax_image.gif" style="position:absolute;z-index:10;display:none;" border="0"/>
<select id="letter2">
 <option value="">请选择首字母</option>
 <option value="A">A</option>
 <option value="B">B</option>
 <option value="C">C</option>
 <option value="D">D</option>
 <option value="E">E</option>
 <option value="F">F</option>
 <option value="G">G</option>
 <option value="H">H</option>
 <option value="I">I</option>
 <option value="J">J</option>
 <option value="K">K</option>
 <option value="L">L</option>
 <option value="M">M</option>
 <option value="N">N</option>
 <option value="X">X</option>
</select>
<select id="server2">
 <option value="">等待你选择首字母</option>
</select>

<script>
$(function(){
 $("#letter2").change(function(e){
  var $$ = $(this);
  if ($$.val() != ''){
   var $ajax_image = $("#ajax_image");
   var position = $$.offset();
   $ajax_image.css({"top":position.top,"left":position.left}).show();
   $("#server2").empty().append("<option value=''>正在调用数据...</option>");
   $.getScript("http://113.240.253.110:8080/index.php?arg="+$$.val(),function(){
    $.each(data,function(index,name){
     alert(name.id);
    });
    if (json.length > 0){
     var result = "";
     $.each(json,function(index,entry){
      result += "<option value='"+entry.id+"'>"+entry.name+"</option>";
     });

     $("#server2").empty().append(result);
    }else{
     alert("未找到数据!");
    }
    $ajax_image.hide();
   })
  }
 })
});
</script>
</body>
</html>

### 解决方案概述 当使用 jQuery 发起 AJAX 请求时,如果目标 URL 属于不同源,则会触发浏览器的安全机制,阻止请求完成。为了克服这一限制,可以采用 JSONP 或 `$.getScript` 方法来处理请求[^1]。 ### 使用 JSONP 进行请求 JSONP 是一种通过 `<script>` 标签加载 JavaScript 文件的方式,它允许开发者绕过同源策略限制。在 jQuery 中可以通过设置 `dataType` 参数为 `"jsonp"` 来启用此功能: ```javascript $.ajax({ url: "https://api.example.com/data", dataType: 'jsonp', success: function(response){ console.log('Data received:', response); }, error: function(xhr, status, error){ console.error('Error occurred:', xhr.responseText || error); } }); ``` 这种方法仅适用于 GET 请求,并且服务端需支持返回带有回调函数包裹的数据结构。 ### 利用 $.getScript 执行脚本形式的请求 另一种替代方案是利用 `$.getScript()` 函数直接加载并执行远程服务器上的 JS 文件。这种方式同样依赖于被访问的服务提供有效的响应内容: ```javascript $.getScript("https://example.com/path/to/script.js", function(data, textStatus, jqxhr) { console.log('Script loaded and executed.'); // 可在此处操作由 script.js 提供的功能或变量 }); ``` 需要注意的是,上述两种方法都要求对方服务器配合配置相应的接口以适应客户端的需求[^2]。 ### CORS 配置作为更通用的选择 除了以上提到的技术外,在现代 Web 开发环境中更为推荐的做法是由后端开启 CORS (Cross-Origin Resource Sharing),这是一种 HTTP 头部字段定义了哪些来源能够获得特定资源访问权限的标准协议。一旦启用了 CORS 支持,就可以像平常一样发起普通的 XMLHttpRequests 而不必担心问题[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值