


jquery's ajax and getJson cross-domain to obtain json data (graphic tutorial)
This article mainly introduces the implementation method of jquery's ajax and getJson to obtain json data across domains. Friends in need can come and refer to it. I hope it will be helpful to everyone.
Many developers are Use jquery to interact with data on the front-end and server-side, so it is easy to think that you can use jquery on the front-end to read data from any site. When I was developing recently, because I had to share data with a project of a third-party company, and because I was considering not occupying much server resources, I decided to read the data directly in HTML instead of transferring it through the server. Then I just encountered the problem of cross-domain access on the browser side.
Cross-domain security restrictions refer to the browser side, and there are no cross-domain security restrictions on the server side.
There are currently two commonly used methods for cross-domain access on the browser side:
1. Through jQuery’s ajax Cross-domain, this is actually implemented using jsonp.
jsonp is the abbreviation of English json with padding. It allows script tags to be generated on the server side and returned to the client, that is, javascript tags are dynamically generated and data is read through javascript callback.
html page-side sample code:
//首先要引入jquery的js包 jQuery(document).ready(function(){ $.ajax({ type : "get", //jquey是不支持post方式跨域的 async:false, url : "http://api.taobao.com/apitools/ajax_props.do", //跨域请求的URL dataType : "jsonp", //传递给请求处理程序,用以获得jsonp回调函数名的参数名(默认为:callback) jsonp: "jsoncallback", //自定义的jsonp回调函数名称,默认为jQuery自动生成的随机函数名 jsonpCallback:"success_jsonpCallback", //成功获取跨域服务器上的json数据后,会动态执行这个callback函数 success : function(json){ alert(json); } }); });
Server-side sample code, taking java as an example:
Server-side code is the key point. I initially thought that as long as the client passes jsonp You can directly access across domains. In fact, this is not the case and requires server-side support.
public void jsonpTest() throws IOException{ HttpServletRequest request = ServletActionContext.getRequest(); HttpServletResponse response = ServletActionContext.getResponse(); //根据html指定的jsonp回调函数的参数名,获取回调函数的名称 //callbackName的值其实就是:success_jsonpCallback String callbackName = (String)request.getAttribute("jsoncallback"); //简单模拟一个json字符串,实际可使用google的gson进行转换,次数通过字符串拼接 //{"name":"张三","age":28} //\是对"号进行转义 String jsonStr = "{\"name\":\"张三\",\"age\":28}"; //最终返回的数据为:success_jsonpCallback({"name":"张三","age":28}) String renderStr = callbackName+"("+jsonStr+")"; response.setContentType("text/plain;charset=UTF-8"); response.getWriter().write(renderStr); }
The principle of jsonp:
First register a callback on the client (such as: 'jsoncallback'), and then change the name of the callback ( Such as: success_jsonpCallback) is passed to the corresponding processing function on the server side.
The server first generates the json data that needs to be returned to the client. Then use javascript syntax to generate a function. The function name is the value of the passed parameter (jsoncallback) (success_jsonpCallback).
Finally, the json data is placed directly into the function as a parameter, thus generating a js syntax document and returning it to the client.
The client browser parses the script tag and uses the data returned by the server as a parameter.
Passes in the callback function predefined by the client (as encapsulated by the jquery $.ajax() method in the above example success: function (json)).
In fact, cross-domain data is loaded by dynamically adding scripts. Data cannot be obtained directly, so a callback function is required.
2. Use jquery's getJson to read data across domains
In fact, the fundamental principle of the getJson method is the same as the way ajax uses jsonp.
getJson is commonly used in jquery to obtain remote data and return it in json format. The prototype of the function is as follows:
jQuery.getJSON(url,data,success(data,status,xhr))
Parameters | Description |
---|---|
url | Required. Specifies the URL to which the request will be sent. |
data | Optional. Specifies the data to be sent to the server with the request. |
success(data,status,xhr) |
Optional. Specifies a function to run when the request succeeds. Extra parameters:
|
$.ajax({ url: url, data: data, success: callback, dataType: json });Let’s get back to the point, let’s look at how to use getJson to obtain data across domains. html page sample code:
$.getJSON("http://api.taobao.com/apitools/ajax_props.do&jsoncallback=?", function (data) { alert(data); } );
Execution principle:
When sending a request, you need to pass a callback function name To the server, the server gets the callback function name, and then returns the return data to the client in the form of parameters, so that the client can adjust it. So the address that sends the request URL must be followed by a parameter such as jsoncallback=?. jquery will automatically replace the ? number with the name of the automatically generated callback function.So the final actual request is: http://api.taobao.com/apitools/ajax_props.do&jsoncallback=jsonp1322444422697
So I want to compare it with the ajax method, That is to say, one of the callback functions is an automatically generated function name, and the other is a manually specified function name. The above is what I compiled for everyone. I hope it will be helpful to everyone in the future. Related articles:jquery ajaxMake it adaptive to height when applying iframe
AJAX What are the implementation methods for secondary linkage
ajaxHow to deal with the Chinese garbled json returned
The above is the detailed content of jquery's ajax and getJson cross-domain to obtain json data (graphic tutorial). For more information, please follow other related articles on the PHP Chinese website!

JavaScript is widely used in websites, mobile applications, desktop applications and server-side programming. 1) In website development, JavaScript operates DOM together with HTML and CSS to achieve dynamic effects and supports frameworks such as jQuery and React. 2) Through ReactNative and Ionic, JavaScript is used to develop cross-platform mobile applications. 3) The Electron framework enables JavaScript to build desktop applications. 4) Node.js allows JavaScript to run on the server side and supports high concurrent requests.

Python is more suitable for data science and automation, while JavaScript is more suitable for front-end and full-stack development. 1. Python performs well in data science and machine learning, using libraries such as NumPy and Pandas for data processing and modeling. 2. Python is concise and efficient in automation and scripting. 3. JavaScript is indispensable in front-end development and is used to build dynamic web pages and single-page applications. 4. JavaScript plays a role in back-end development through Node.js and supports full-stack development.

C and C play a vital role in the JavaScript engine, mainly used to implement interpreters and JIT compilers. 1) C is used to parse JavaScript source code and generate an abstract syntax tree. 2) C is responsible for generating and executing bytecode. 3) C implements the JIT compiler, optimizes and compiles hot-spot code at runtime, and significantly improves the execution efficiency of JavaScript.

JavaScript's application in the real world includes front-end and back-end development. 1) Display front-end applications by building a TODO list application, involving DOM operations and event processing. 2) Build RESTfulAPI through Node.js and Express to demonstrate back-end applications.

The main uses of JavaScript in web development include client interaction, form verification and asynchronous communication. 1) Dynamic content update and user interaction through DOM operations; 2) Client verification is carried out before the user submits data to improve the user experience; 3) Refreshless communication with the server is achieved through AJAX technology.

Understanding how JavaScript engine works internally is important to developers because it helps write more efficient code and understand performance bottlenecks and optimization strategies. 1) The engine's workflow includes three stages: parsing, compiling and execution; 2) During the execution process, the engine will perform dynamic optimization, such as inline cache and hidden classes; 3) Best practices include avoiding global variables, optimizing loops, using const and lets, and avoiding excessive use of closures.

Python is more suitable for beginners, with a smooth learning curve and concise syntax; JavaScript is suitable for front-end development, with a steep learning curve and flexible syntax. 1. Python syntax is intuitive and suitable for data science and back-end development. 2. JavaScript is flexible and widely used in front-end and server-side programming.

Python and JavaScript have their own advantages and disadvantages in terms of community, libraries and resources. 1) The Python community is friendly and suitable for beginners, but the front-end development resources are not as rich as JavaScript. 2) Python is powerful in data science and machine learning libraries, while JavaScript is better in front-end development libraries and frameworks. 3) Both have rich learning resources, but Python is suitable for starting with official documents, while JavaScript is better with MDNWebDocs. The choice should be based on project needs and personal interests.


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

MantisBT
Mantis is an easy-to-deploy web-based defect tracking tool designed to aid in product defect tracking. It requires PHP, MySQL and a web server. Check out our demo and hosting services.

PhpStorm Mac version
The latest (2018.2.1) professional PHP integrated development tool

MinGW - Minimalist GNU for Windows
This project is in the process of being migrated to osdn.net/projects/mingw, you can continue to follow us there. MinGW: A native Windows port of the GNU Compiler Collection (GCC), freely distributable import libraries and header files for building native Windows applications; includes extensions to the MSVC runtime to support C99 functionality. All MinGW software can run on 64-bit Windows platforms.

mPDF
mPDF is a PHP library that can generate PDF files from UTF-8 encoded HTML. The original author, Ian Back, wrote mPDF to output PDF files "on the fly" from his website and handle different languages. It is slower than original scripts like HTML2FPDF and produces larger files when using Unicode fonts, but supports CSS styles etc. and has a lot of enhancements. Supports almost all languages, including RTL (Arabic and Hebrew) and CJK (Chinese, Japanese and Korean). Supports nested block-level elements (such as P, DIV),

ZendStudio 13.5.1 Mac
Powerful PHP integrated development environment