溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

jsonp跨域請求實現示例

發布時間:2020-09-24 16:49:18 來源:腳本之家 閱讀:146 作者:tapt 欄目:web開發

網上看了很多關于jsonp的資料,發現在本機運行后實現不了,有的是有錯漏,有的是說的比較含糊,接合自己的情況,整了一個可運行的示例;

前言:

ajax請求地址:http://192.168.1.102:8080/carop/jsonp

服務端要返回的jsonp字符串:jsonpCallback({"name":"劉德華","電話":"17688888888"})

jsonp寫法,寫法上可以理解成一個javascript函數的執行,例如alert("hello world")會彈出hello world的窗口,再例如alert({"name":"劉德華"})會彈出[object Object]的窗口。(注意這里參數兩端沒加雙引號,它是一個有屬性的對象而不是一個字符串)

那么本示例的jsonp中,可以將jsonpCallback理解成函數名,{"name":"劉德華","電話":"17688888888"}這個對象是這個函數執行時所要傳遞的參數。

客戶端:

$.ajax({
       type: "get",
       async:false,
url: "http://192.168.1.102:8080/carop/jsonp",
       dataType: "jsonp",
jsonpCallback:"jsonpCallback",       
       success: function(data){
       alert(data.name+"\n "+data.tel);
       }
     }); 

其他的ajax方法比如getjson亦可,寫法上有區別,這里僅采用一種方法。

說明:jsonpCallback:"jsonpCallback",前一個ajax參數表示要執行的函數,后面的”jsonpCallback“,這個是服務器返回jsonp的javascript函數名。(網上有相關資料這個參數寫的是jsonp而不是jsonpCallback,經實際測試要寫成jsonpCallback,jquery版本1.8,所測試瀏覽器為火狐和edge)

服務端

servlet控制器層直接返回jsonp;

import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/jsonp")
public class jsonp extends HttpServlet{
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
 throws ServletException, IOException {
 resp.setCharacterEncoding("UTF-8");
 //System.out.println("進入jsonp");
 resp.setContentType("text/json;charset=utf-8");
 String json="{\"name\":\"劉德華\",\"tel\":\"17688888888\"}";
 String jsonp="jsonpCallback("+json+")";
 PrintWriter pw=resp.getWriter();
 System.out.println(jsonp);
 pw.print(jsonp);
}
@Override
 protected void doPost(HttpServletRequest req, HttpServletResponse resp)
  throws ServletException, IOException {
 // TODO Auto-generated method stub
 doGet(req, resp);
 }
}

以上就是本文的全部內容,希望本文的內容對大家的學習或者工作能帶來一定的幫助,同時也希望多多支持億速云!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女