- http://annotations.tistory.com/55
아래 내용을 javascript 라이브러리에 넣는다
var jsonpDom, jsonpData;
function callJsonp(u1,d1){
$.ajax({
type: 'POST',
cache:false, // false 캐시 되지 않아야 할 때
dataType : 'jsonp', // jsonp, https:// 와 섞어 써서 보안성 제고
jsonp : 'callback', // jsonp 명칭을 callback 으로 하거나 다른 명칭도 상관없음
url : u1,
data : d1, // 전달할 데이타. 기본이 UTF-8 이므로 한글 세팅에 항상 유의
success : function(d){
jsonpData = d; // ajax 로 호출되는 쪽에서 세팅하는 데이타를 글로벌 변수에 세팅
if(d.dom!='') jsonpDom = d.dom; // DOM 형태의 HTML
if(d.msg!='') alert(d.msg); // 메시지가 있으면 알림창
if(d.cb!=''){ try{ eval(d.cb); }catch(e){} } // callback 이 필요한 경우
},
error:function(d){ alert('Ajax error - callJsonp '); }
});
}
function openBPopupDom(){
var option = {
modalClose:false//false 모달 팝업이고, 팝업이 올려지는 바탕을 클릭해도 팝업이 닫히지 않음
,opacity:0.75//팝업이 올려지는 바탕을 반투명하게 세팅
,positionStyle:'fixed'//fixed 화면이 상하로 스크롤 되어도 본문 내용은 스크롤 되지만 팝업은 고정 위치
,fadeSpeed:'slow'
,transition:'slideIn'//slideIn 팝업이 왼쪽에서 가운데로 열림
,transitionClose:'slideBack'//slideBack 팝업이 가운데에서 오른쪽으로 닫힘
,onOpen:function(){
$('#idPopup .content').html(jsonpDom);
}
};
$('#idPopup').bPopup(option);//http://dinbror.dk/bpopup/, http://annotations.tistory.com/55
}
function closeBPopup(){ $('#idPopup').bPopup().close(); }
아래 내용은 ajax 를 호출할 곳에 세팅
<style>
.bPopup {border-radius:7px;box-shadow:0 0 25px 5px #999; background:white;color:black; padding:10px; min-width:450px;min-height:150px; display:none; position:relative;}
.bPopup .button {background:#2b91af;color:#fff; border-radius:5px; padding:10px; text-align:center;text-decoration:none;cursor:pointer;}
.bPopup .button.bClose {border-radius:7px; box-shadow:none; padding:5px 8px 4px 8px; position:absolute;right:-16px;top:-16px; font-size:12pt}
</style>
<div id="idPopup" class="bPopup">
<span class="button bClose n1">X</span>
<div id="idContent" class="content"></div>
</div>
<script>
function callJ(p){ if(p!='') callJsonp('공통으로 사용될 URI', 'mode='+p); }
function doSomething{ callJ('ActionMode¶m='+param); } // serialize() 해도 되고, json 형식으로 세팅하고 $.param(...) 해도 되고..
</script>
아래 내용은 ajax 로 호출되어 jsonp 를 세팅하는 곳
<%@ page import="net.sf.json.JSONObject" %>
<%
HashMap hm = new HashMap(); // jsonp 의 최후 목적물을 생성하고, 결과값을 세팅하기 위해 try 밖에 세팅
hm.put("dom", "HTML 내용");
hm.put("cb","func1(param1, param2, ...) func2()");
if(e.getMessage()!=null){
hm.put("msg","작업시 오류가 발생하였습니다. ");
}
}finally{
if(!hm.containsKey("result")) hm.put("result", result); // true 로 세팅하지 않았다면 false
if(!hm.containsKey("msg")) hm.put("msg",""); // 특별한 메시지가 없었다면 통과
if(!hm.containsKey("cb")) hm.put("cb",""); // jsonp 호출 이후 메소드 호출 때 cb 사용. 없다면 종료
out.print(Utils.get(req.get("callback"))+"("+JSONObject.fromObject(hm)+")");
}
'Local Oriented > jQuery' 카테고리의 다른 글
iOS 에서 화면 전환 자바스크립트가 실행되지 않는다면..? (0) | 2019.01.04 |
---|---|
iframe 안에서 iframe 밖의 요소를 활용하는 방법 (0) | 2018.03.13 |
jQueryUI dialog input value 값 가져오는 방법 (2) | 2017.08.30 |
trigger() 가 작동하지 않는다면.. (0) | 2017.08.16 |
slidesjs 함수 호출, data('plugin_slidesjs') (0) | 2017.08.14 |