Home Web Front-end JS Tutorial Detailed explanation of the use of ajax and jsonp

Detailed explanation of the use of ajax and jsonp

Apr 17, 2018 pm 02:43 PM
ajax javascript jsonp

This time I will bring you a detailed explanation of the use of ajax and jsonp. What are the precautions when using ajax and jsonp. The following is a practical case, let's take a look.

Foreword: ajax and jsonp can communicate with the background to obtain data and information, but do not need to refresh the entire page to achieve partial refresh of the page.

1. ajax

•Definition: A technology that sends http requests to communicate asynchronously with the background.

•Principle: Instantiate the xmlhttp object and use this object to communicate with the background.

Same-origin policy for ajax:

•The pages or resources requested by Ajax can only be resources in the same domain and cannot be resources in other domains. This is based on security considerations when designing Ajax.

-------------------------------------------------- ----------------------------------

ajax method:

1. $.ajax({}):

•Common parameters: •url: request network address
•type: request method, the default is 'GET', commonly used 'POST'
•dataType: set the returned data format, generally use json, can also be html and jsonp;
•data: Set the data sent to the server
•.done(): Set the callback function after the request is successful
•.fail(): Set the request after the request fails Callback function
•async: Set whether it is asynchronous. The default value is 'true', which means asynchronous

•Code usage:

$(function () {
  $("input").click(function () {
    $.ajax({
      url: "./data.json",
      type: "get",
      dataType: "json",
    });
    .done(function(data) {//请求成功的回调函数
      $("input").val(dat.name);
    })
    .fail(function() {
      alert('服务器超时,请重试!');
    });
  });
})
......
<body>
  <p>
    <input type="button" value="xinzhi">
  </p>
</body>
Copy after login

Note: data represents the data returned by the background; the use of ajax depends on the server environment.

2. $.get():

•The $.get() method uses a GET request to load data from the server; it is also an ajax method for requesting data without refreshing.

•Parameters:
•url: The URL to be accessed must follow the same-origin policy;
•data: The data sent to the server.
•function(data,status){}: Request the function to run successfully
•dataType: Request the data type of the response.

//参考代码:
$(function () {
  $("input").click(function () {
    $.get(
      "./data.json",
      function (data,status) {
        console.log(data.name);
      },
      "json"
    );
  });
})
......
<body>
  <p>
    <input type="button" value="xinzhi">
  </p>
</body>
Copy after login

•The parameters of the $.get() method are different from those of $.ajax(). The URL is a required parameter, and the other three are optional.
•Data is the returned data, status indicates the status of the request, generally including ""success", "error", "timeout", etc.
•If the datatype is jsonp, you can also request data across domains .
•No callback function for request failure.

3. $.post()

•The $.get() method uses a POST request to load data from the server;

•The method used is exactly the same as the $.get() method.


4. $.load():

•Load data from the server, no need to specify datatype, the returned data will be automatically placed into the element.

•parameter:


•URL: address;

•data: request parameters, optional;

•function(response, status, xhr): callback function for successful request.

$(function () {
  $("input").click(function () {
    $(".box").load(
      "./data.json",
      function (response,status) {
        console.log(data.name);
      }
    );
  });
})
......
<body>
  <p>
    <input type="button" value="xinzhi">
    <p class="box"></p>
  </p>
</body>
Copy after login

•The returned data will be placed in p; •Data cannot be accessed across domains;

•response is the returned data, and status is the status of the request;
•There is no callback function for request failure.

4. getJSON()

•Method uses AJAX HTTP GET request to get JSON data.

•Parameters:

•url: request URL, required parameters;
•data: data sent to the server;
•function(data,status,xhr): callback function for successful request

$(function () {
  $("input").click(function () {
    $.getJSON(
      "./data.json",
      function(data,status) {
        console.log(data.name);
      },
    );
  });
})
......
<body>
  <p>
    <input type="button" value="xinzhi">
  </p>
</body>
Copy after login

•The method directly obtains json data;

•No callback function that returns failure;

•The callback function is a named function, not an

anonymous function

;

5. getScript()

•Method uses AJAX HTTP GET request to obtain and execute js code.

•Parameters:

•url: request URL, required parameters;

•function(data,status): callback function for successful request

$(function () {
  $("input").click(function () {
    $.getScript(
      "./data.js",
      function(data,status) {
        console.log(data);
      },
    );
  });
})
......
<body>
  <p>
    <input type="button" value="xinzhi">
  </p>
</body>
Copy after login

•The return result data is js code;

•This method can be used to dynamically load js code.

2.jsonp

•定义:一种可以实现跨域发送http请求的数据通信格式,可以嵌在ajax中使用。
•原理:利用script标签可以跨域链接资源的特性。

用法一:函数传参

<script type="text/javascript">
  function aa(data){
    console.log(data.name);
  }
</script>
<script type="text/javascript" src="....../data.js"></script>
Copy after login

说明:在外部定义一个data.js文件,这个文件的路径可以与当前页面不在同一个域下面。

data.js的内容:

aa({
  
  "data":{
    "name":"xiaohong",
    "age":"18"
  }
})
Copy after login

•将数据以页面定义的函数的参数的形式传递进去,从而获取数据。

•本质上可以将数据拆分,使得数据不用强制保存在同一个域名下。

用法二:利用ajax

$.ajax({
  url:'...../data.js',//可以不是本地域名 
  type:'get',
  dataType:'jsonp', //jsonp格式访问
  jsonpCallback:'aa' //获取数据的函数
})
.done(function(data){
  console.log(data.name);
})
.fail(function() {
  alert('服务器超时,请重试!');
});
Copy after login

•data.js的内容和上面一样。

•使用ajax的方法本质上也是script标签可以跨域链接资源,不过jquery为其封装了相同的方法,看起来一样。

•以上代码的执行过程为:ajax通过jsonp技术跨域访问data.js文件,通过找到aa()方法将其参数传递给.done方法的data参数执行.done方法。

•目前这种方式仍然有其局限性,就是必须知道data.js文件的名字和定义的方法aa,如果在仅仅知道域名的情况下,需要另外的方法.

用法三

var $input = $("input");
$input.keyup(function () {
  $.ajax({
    url:'https://sug.so.360.cn/suggest?',//请求360搜索的联想数据
    type:'get',
    dataType:'jsonp', //jsonp格式访问
    data: {word: $input.val()},
  })
  .done(function(data){
    console.log(data);
  })
  .fail(function() {
    alert('服务器超时,请重试!');
  });
})
....
<body>
  <input type="text">
</body>
Copy after login

•通过浏览器查看每次输入关键字服务器发送回的数据包,找到js文件中header的地址以及相关的提交数据,发现key为word关键字,因此可以向服务器发送data数据。
•服务器返回的数据会自动传给回调的匿名函数的参数data.                                        

相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!

推荐阅读:



The above is the detailed content of Detailed explanation of the use of ajax and jsonp. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Best Graphic Settings
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. How to Fix Audio if You Can't Hear Anyone
4 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: How To Unlock Everything In MyRise
1 months ago By 尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

How to solve the 403 error encountered by jQuery AJAX request How to solve the 403 error encountered by jQuery AJAX request Feb 20, 2024 am 10:07 AM

Title: Methods and code examples to resolve 403 errors in jQuery AJAX requests. The 403 error refers to a request that the server prohibits access to a resource. This error usually occurs because the request lacks permissions or is rejected by the server. When making jQueryAJAX requests, you sometimes encounter this situation. This article will introduce how to solve this problem and provide code examples. Solution: Check permissions: First ensure that the requested URL address is correct and verify that you have sufficient permissions to access the resource.

How to solve jQuery AJAX request 403 error How to solve jQuery AJAX request 403 error Feb 19, 2024 pm 05:55 PM

jQuery is a popular JavaScript library used to simplify client-side development. AJAX is a technology that sends asynchronous requests and interacts with the server without reloading the entire web page. However, when using jQuery to make AJAX requests, you sometimes encounter 403 errors. 403 errors are usually server-denied access errors, possibly due to security policy or permission issues. In this article, we will discuss how to resolve jQueryAJAX request encountering 403 error

How to get variables from PHP method using Ajax? How to get variables from PHP method using Ajax? Mar 09, 2024 pm 05:36 PM

Using Ajax to obtain variables from PHP methods is a common scenario in web development. Through Ajax, the page can be dynamically obtained without refreshing the data. In this article, we will introduce how to use Ajax to get variables from PHP methods, and provide specific code examples. First, we need to write a PHP file to handle the Ajax request and return the required variables. Here is sample code for a simple PHP file getData.php:

How to solve the problem of jQuery AJAX error 403? How to solve the problem of jQuery AJAX error 403? Feb 23, 2024 pm 04:27 PM

How to solve the problem of jQueryAJAX error 403? When developing web applications, jQuery is often used to send asynchronous requests. However, sometimes you may encounter error code 403 when using jQueryAJAX, indicating that access is forbidden by the server. This is usually caused by server-side security settings, but there are ways to work around it. This article will introduce how to solve the problem of jQueryAJAX error 403 and provide specific code examples. 1. to make

PHP and Ajax: Building an autocomplete suggestion engine PHP and Ajax: Building an autocomplete suggestion engine Jun 02, 2024 pm 08:39 PM

Build an autocomplete suggestion engine using PHP and Ajax: Server-side script: handles Ajax requests and returns suggestions (autocomplete.php). Client script: Send Ajax request and display suggestions (autocomplete.js). Practical case: Include script in HTML page and specify search-input element identifier.

PHP vs. Ajax: Solutions for creating dynamically loaded content PHP vs. Ajax: Solutions for creating dynamically loaded content Jun 06, 2024 pm 01:12 PM

Ajax (Asynchronous JavaScript and XML) allows adding dynamic content without reloading the page. Using PHP and Ajax, you can dynamically load a product list: HTML creates a page with a container element, and the Ajax request adds the data to that element after loading it. JavaScript uses Ajax to send a request to the server through XMLHttpRequest to obtain product data in JSON format from the server. PHP uses MySQL to query product data from the database and encode it into JSON format. JavaScript parses the JSON data and displays it in the page container. Clicking the button triggers an Ajax request to load the product list.

PHP and Ajax: Ways to Improve Ajax Security PHP and Ajax: Ways to Improve Ajax Security Jun 01, 2024 am 09:34 AM

In order to improve Ajax security, there are several methods: CSRF protection: generate a token and send it to the client, add it to the server side in the request for verification. XSS protection: Use htmlspecialchars() to filter input to prevent malicious script injection. Content-Security-Policy header: Restrict the loading of malicious resources and specify the sources from which scripts and style sheets are allowed to be loaded. Validate server-side input: Validate input received from Ajax requests to prevent attackers from exploiting input vulnerabilities. Use secure Ajax libraries: Take advantage of automatic CSRF protection modules provided by libraries such as jQuery.

Asynchronous data exchange using Ajax functions Asynchronous data exchange using Ajax functions Jan 26, 2024 am 09:41 AM

How to use Ajax functions to achieve asynchronous data interaction With the development of the Internet and Web technology, data interaction between the front end and the back end has become very important. Traditional data interaction methods, such as page refresh and form submission, can no longer meet user needs. Ajax (Asynchronous JavaScript and XML) has become an important tool for asynchronous data interaction. Ajax enables the web to use JavaScript and the XMLHttpRequest object

See all articles