`

JQuery用$.ajax或$.getJSON跨域获取JSON数据的实现代码

 
阅读更多
通过JQuery可以跨域获取JSON数据,但必须弄清楚的是,JQuery不可以跨域获取任意JSON格式的数据,必须要通过服务端输出特定的针对JQuery跨域读取的JSON数据。你可能目前对此仍然毫无了解,没关系,本文将以最简单易懂的方式介绍这个技术,相信人人都容易读懂,并能够实际应用。

JQuery获取同域的JSON数据

首先引用jQuery库文件:

<script src="http://apps.bdimg.com/libs/jquery/1.9.0/jquery.min.js">
</script>

jQuery代码:
var url="http://localhost:8000/user.php";
$(function()
{ 
$.getJSON(url,function(data)
{ alert (data.name);})
});

服务器代码(PHP):
<?php header('Content-Type:text/html;Charset=utf-8'); 
$arr = array(  
"name" => "xiaoming",  
"pass" => "123456"
);
 echo json_encode($arr); 
?>

服务器返回字符串:

{"name":"xiaoming","pass":123456}

JQuery获取跨域的JSON数据

首先引用jQuery库文件:

<script src="http://apps.bdimg.com/libs/jquery/1.9.0/jquery.min.js">
</script>
jQuery代码:
var url="http://localhost:8000/user.php?jsoncallback=?";
$(function(){
$.getJSON(url,function(data){
alert (data.name);
})
});

服务器代码(PHP):
<?php header('Content-Type:text/html;Charset=utf-8'); 
$arr = array( 
"name" => "xiaoming",  
"pass" => "123456"); 
echo $_GET['jsoncallback']."(".json_encode($arr).")"; 
?>

服务器返回字符串(需要传入参数“jsoncallback”):

jQuery19003894091040769696_1505708469340({"name":"xiaoming","pass":123456})

说明,jQuery传入值每次都不一样。

JQuery获取同域和跨域JSON数据的区别

从上述两个例子看到,JQuery获取同域和跨域JSON数据的区别有两点:

1)jQuery写法不同,跨域时要多加一个参数“jsoncallback=?”

2)服务器端返回字符串的写法不同,跨域时需要用到“'jsoncallback'”的传入值,构造的字符串格式是:jsoncallback传入值(原JSON字符串),注意要用括号把原JSON字符串包住。

总结

通过本文介绍,大家都应该明白了,要jQuery跨域读取JSON数据,首先需要在服务器端构造一个特殊的JSON字符串,否则是读取不了的,好在,构造方法十分简单,文中例子一看便懂。

jQuery + Ajax 获得跨域JSON数据

前面的例子用的是 $.getJSON 来获得跨域JSON数据,其实我们用 $.ajax 的方法也同样可以的。

首先引用jQuery库文件:

<script src="http://apps.bdimg.com/libs/jquery/1.9.0/jquery.min.js">
</script>
jQuery代码:
<script type="text/javascript"> 
$(function(){  
$.ajax({  
type: 'get',  
url: 'http://localhost:8000/user.php?jsoncallback=?',  dataType: 'jsonp',  
jsonp: "jsoncallback",  
success: function(data) {   
alert("用户名:"+ data.name+" 密码:"+ data.pass);  
} 
}); 
}) </script>

特别注意,dataType 是 jsonp 而不是 json 。
分享到:
评论

相关推荐

    解决JQurey跨域问题$.get|$.post|$.getJSON等等统统可跨域

    // 使用$.getJSON进行跨域请求 $.getJSON('http://otherdomain.com/api', {param1: 'value'}, function(data) { console.log(data); }, 'jsonp'); ``` 在这个例子中,jQuery会自动处理JSONP请求,添加`callback=?`...

    jquery 异步调用$.ajax() $.post() $.get()

    // 使用$.get发送GET请求 $.get('http://example.com/api/data', {key1: value1, key2: value2}, function(response) { // 处理响应数据 }); ``` 在处理XML数据时,`$.ajax()`和`$.get()`特别有用。例如,如果你从...

    jQuery使用$.get()方法从服务器文件载入数据实例

    在使用$.get()方法时,我们还需要注意一些潜在的问题。例如,网络请求可能会因为各种原因失败,比如网络错误或服务器不可达。因此,为了编写健壮的代码,我们需要在回调函数中处理这些错误情况。 另一个需要注意的...

    $.ajax()方法详解

    使用$.ajax()方法时,可以结合jQuery的其他功能,如`.done()`、`.fail()`、`.always()`等,来处理请求的成功、失败和完成情况。同时,可以通过`$.ajaxSetup()`来设置全局的默认选项。 总的来说,$.ajax()方法是...

    jQuery中$.ajax()和$.getJson()同步处理详解

    $.getJson()方法在内部仍然使用$.ajax()方法,并将"dataType"参数设置为"json"。它的参数同样包括:"url","data","success",以及"beforeSend"等,但更加简化,更易于使用。 在处理JSONP(JSON with Padding)...

    使用$.Ajax调用后台.aspx

    本文将深入探讨如何使用$.ajax调用后台的.aspx页面,以及涉及到的相关知识点。 一、$.ajax简介 $.ajax是jQuery库中的一个核心方法,它允许我们执行HTTP请求,如GET和POST,与服务器进行通信。此方法支持JSON、XML、...

    JQ中$.ajax()方法详解

    其中,`$.ajax()`方法是实现异步数据请求的核心功能之一,它简化了与服务器交互的过程,使得前端页面无需刷新即可更新数据或状态。下面我们将详细解析`$.ajax()`方法中的各个参数及其使用场景。 #### 1. `url` - ...

    jQuery的3种请求方式$.post,$.get,$.getJSON

    在jQuery库中,$.post, $.get和$.getJSON是用于执行AJAX(Asynchronous JavaScript and XML)请求的三种主要方法,这些方法使得前端与后端服务器进行异步数据交互成为可能,无需刷新整个页面。接下来,我们将详细...

    用原生JavaScript实现jQuery的$.getJSON的解决方法

    值得注意的是,使用$.getJSON时,通常还带有一个回调函数的参数名,通常是"callback",用于处理JSONP(JSON with Padding)请求。 3. 原生JavaScript实现JSONP: JSONP(JSON with Padding)是一种数据交换格式,它...

    jQuery 封装Ajax

    jQuery的Ajax方法主要包括`$.ajax()`, `$.get()`, `$.post()`, `$.getJSON()`等。这些方法都提供了一种优雅的方式来发送和接收数据,同时提供了丰富的配置选项来处理各种情况。 ### 1. `$.ajax()` `$.ajax()`是...

    基于$.ajax()方法从服务器获取json数据的几种方式总结

    jQuery的`$.ajax()`方法是进行异步数据请求的核心,其中`dataType`属性用于指定期望服务器返回的数据类型。常见的取值有: 1. `xml`: 返回XML文档,jQuery可以进一步处理。 2. `html`: 返回HTML文本,其中的script...

    通过jquery的$.getJSON做一个跨域ajax请求试验

    在本文中,我们将探讨如何使用jQuery的`$.getJSON`方法进行跨域Ajax请求,并通过一个简单的预约登记接口的示例来展示其实现过程。首先,理解`$.getJSON`是jQuery库提供的一个便捷方法,用于异步获取JSON格式的数据,...

    Ajax +jquery跨域获取JSON

    具体实现过程中,开发者可能使用了jQuery的`$.ajax()`或`$.getJSON()`方法发起跨域请求。例如: ```javascript $.ajax({ url: 'http://example.com/weather', type: 'GET', dataType: 'jsonp', success: ...

    利用JQuery jsonp实现Ajax跨域请求json数据

    在jQuery中,我们可以使用`.ajax()`或`.getJSON()`方法,加上`jsonp`类型和`callback`参数来发起JSONP请求。例如: ```javascript $.ajax({ url: 'http://example.com/data', type: 'GET', dataType: 'jsonp', ...

    使用$.getJSON实现跨域ajax请求示例代码

    $.getJSON 是 jQuery 提供的一种 AJAX 方法,用于向服务器请求 JSON 数据并在数据加载成功后执行回调函数。这个方法特别适用于跨域请求,因为 JSONP(JSON with Padding)协议允许绕过同源策略,使得 JavaScript ...

    使用jquery的方式通过ajax处理json格式的数据

    1. 使用$.ajax()、$.getJSON()、$.get()或$.post()发起请求。 2. 设置`dataType: 'json'`,让jQuery自动解析返回的数据。 3. 在回调函数中处理解析后的JSON数据。 4. 遵循同源策略,处理可能出现的跨域问题。 在...

    getJSON解决 跨域问题例子

    本例中的“getJSON”很可能指的是jQuery库中的getJSON方法,它支持JSONP机制来实现跨域数据获取。 JSONP的工作原理是利用`&lt;script&gt;`标签不受同源策略限制的特点,通过动态创建`&lt;script&gt;`元素并设置其src属性为...

Global site tag (gtag.js) - Google Analytics