json 을 사용했을 경우 IE 의 보안을 낮추면 jsonp 를 사용하지 않고도 가능합니다.
(과연... 사용자가 보안을 낮출지... ㅎㅎ)
// --------------------------------------------------------------------------
// other.com json.php
<?php
function arr2json($arr){
foreach($arr as $k=>$val) $json[] = '"'.$k.'"'.':'.php2js($val);
if(count($json) > 0) return '({'.implode(',', $json).'})';
else return '';
}
function php2js($val){
if(is_array($val)) return arr2json($val);
if(is_string($val)) return '"'.addslashes($val).'"';
if(is_bool($val)) return 'Boolean('.(int) $val.')';
if(is_null($val)) return '""';
return $val;
}
$arr = array ('a'=>$_GET["a"],'b'=>$_GET["b"]);
echo $_GET["jsoncallback"].arr2json($arr);
?>
// --------------------------------------------------------------------------
// jsonsend.php
$(document).ready(function() {
$('#send').click(function() {
$.ajax({
url: 'http://other.com/json.php?jsoncallback=?',
data: {
a: a_site_data,
b: a_email_data
},
type: 'get',
dataType: 'jsonp',
jsonp : 'jsoncallback',
error: function() {
alert('Ajax failure');
},
success: function(response) {
alert('신청이 완료되었습니다.'+response.b);
}
});
}).css({cursor:'pointer'});
});
아래 두가지 방법은 안해봐서 정확히 모르겠지만...
이렇게도 하는거 같더군요. 위에가 복잡하다고 느껴지시면 아래처럼 시도해보세요 ^^;
$.get('http://www.other.com/Service.svc/GetToJson?callback=?', function (data) {
alert(data);
}, 'jsonp');
$.getJSON('../../Services/Service.svc/GetToJson', function (data) {
alert(data);
});
중요한건 서버단에서 데이터 전송할때 아래와 같은 형식으로 되어야 한다는겁니다.
jsonp1271738777234({"a":"webst.kr","b":"12333"})
이건 번외인데요.
ajax 디버깅 할때 오류도 안나오고 어찌해야 할지 모를때 아래 툴을 설치하셔서 사용하시면 좋더군요.
http://www.fiddler2.com/fiddler2/
1. 설치하고 실행합니다.
2. IE를 실행하고 웹사이트에 접속합니다.
3. ajax 통신을 시도합니다.
4. 프로그램에서 데이터의 전송이 보이는데 이것을 활용하면 됩니다.
이 프로그램 모를적엔 어떻게든 데이터 넘겨주는 파일에서 값좀 찍어볼라고 힘들었는데...
이제 그럴 필요가 없어졌네요 ^^;
영삼넷
Categories
Recent Posts
Recent Comments
Statistics
- Total Visitors:
- 396182
- Today:
- 6843388
- Yesterday:
- 9752247
IT강국 김영삼 블로그에 오신걸 진심으로 환영합니다.
©2002 영삼넷 // openkr
©2002 영삼넷 // openkr