簡單的實現jsonp跨域請求

weixin_34249678發表於2018-04-19

標籤:jsonp


後續再進行詳細補充

java後臺程式碼

/**
 * pingan_sap jsonp呼叫,初始化上線後的  服務違禁用語
 * @param response
 * @param workgroupid
 * @param subccno
 * @param vdn
 * @param callback
 */
@RequestMapping(value = "/keywordServiceDisableGrid",method = {RequestMethod.GET })
@ResponseBody
public void keywordServiceDisableGrid(HttpServletResponse response, String workgroupid, String subccno, String vdn, String callback) {

    JSONObject retJsonObject=new JSONObject();
    try{
        boolean flag = ctiService.getServiceDisableDataGrid(workgroupid, subccno, vdn);
        if (flag) {
            retJsonObject.put("resultcode", "0");
            retJsonObject.put("resultmsg", "success");
        }else{
            retJsonObject.put("resultcode", "1");
            retJsonObject.put("resultmsg", "failure");
        }
        log.error("更新違禁用語,呼叫結果  =  " + flag);
        }catch(Exception e){
        retJsonObject.put("resultcode", "1");
        retJsonObject.put("resultmsg", "failure");
        log.error(e.getMessage());
    }
    // 接收引數callback名稱需要與js中配置的jsonp標籤名一致
    String result = callback+"("+retJsonObject.toString()+");";//拼接可執行的js

    //返回客戶端內容
    PrintWriter pw= null;
    try {
        pw = response.getWriter();
    } catch (IOException e) {
        e.printStackTrace();
    }
    System.out.println(result);
    pw.print(result);
}

js前端程式碼

<!-- 上線匯入的服務禁用語,跨域請求cti -->
function onlineKeyword(){
    $.ajax({
        type : 'GET',
        dataType : 'jsonp', // 資料型別配置成jsonp
        jsonp : "callback", //配置jsonp隨機碼標籤,在伺服器程式碼部分需要用到他來拼接一個json的js物件
        url : 'http://127.0.0.1:8081/pingan_cti/interfaces/keywordServiceDisableGrid', //服務路徑
        async : false,
        data: {
            "workgroupid":'-1',
            "subccno":'1',
            "vdn":'1',
        },
        success : function (response) {
            if(response.resultcode == 0){
                Modal_Alert('服務禁用語管理','上線成功');
            }else{
                Modal_Alert('服務禁用語管理','上線失敗');
            }
        },
        error: function (XMLHttpReuqest, textStautus, errothrown) {
            console.log(XMLHttpRequest.status);
            console.log(XMLHttpReuqest.readyState);
            console.log(XMLHttpRequest.responseText);
            console.log(textStautus);
            console.log(errothrown);
            Modal_Alert('服務禁用語管理','上線失敗');
        }
    });
}

jsp

<button type="button" class="btn btn-info btn-sm" onclick="onlineKeyword()"><span class="ace-icon fa glyphicon-plus icon-on-right bigger-110"></span>上線</button>

相關文章