2012-09-01 3 views
0

Ajax를 사용하여 JSON을 사용하는 교차 도메인 호출을 수행하고 스크립트가 FF로 정상적으로 작동하지만 예를 들어 스크립트에서 select menu을 결과로 채우지 않습니다. 오류 그래서 나는 스크립트가 확실히 작동하고 크로스 도메인 호출을 만들고, 아무도 내가 뭘 잘못하고 있는지 말해 줄 수 있습니까?JSON AJAX를 사용하는 교차 도메인

function xss_ajax(url) { 

    var script = document.createElement('script'); 
    script.setAttribute('type', 'text/javascript'); 
    script.setAttribute('src', url); 
    script.setAttribute('id', 'script_id'); 

    script_id = document.getElementById('script_id'); 
    if (script_id) { 
     document.getElementsByTagName('head')[0].removeChild(script_id); 
    } 


    document.getElementsByTagName('head')[0].appendChild(script); 

    document.getElementById("addrlist").innerHTML = ""; 
    document.getElementById("errlog").innerHTML = ""; 
} 

function callback(data) { 

    if (typeof data['error'] != "undefined") { 
     if (window.on_error) { 
      on_error(); 
     } 

     if (document.getElementById("errlog")) { 
      document.getElementById("errlog").innerHTML = "<br>" + data['error'] + "<br>"; 
     } else { 
      alert(data['error']); 
     } 

    } else { 



     var val = data['address1'] + ", " + data['address2'] + ", " + data['address3'] + ", " + data['address4'] + ", " + data['postcode']; 

     document.getElementById("addrlist").innerHTML += "<option value='" + val + "'>" + val + "</option>"; 

    } 
} 

function searchpost() { 

    var license = '98798797'; 
    var url = "http://mydomin.co.uk/myfile.php?postcode=" + escape(document.getElementById("field1").value) + '&license=' + escape(license); 

    xss_ajax(url); 

} 
+0

AJAX는 어디에 있습니까? –

+0

JSON 파일 또는 JS 파일을 요청 하시겠습니까? –

+0

@MihaiIorga : 실제로는 JSONP 요청이므로 스크립트 태그를 머리에 추가하는 코드입니다. – Guffa

답변

0

나는 선택에 옵션을 추가하는 방법이라고 생각합니다. 새 옵션 요소를 만들고 모든 HTML 내용을 바꾸는 대신 select 요소에 추가하십시오.

var opt = document.createElement('OPTION'); 
opt.text = val; 
opt.value = val; 
document.getElementById("addrlist").options.add(opt); 
0

당신은 일을 더 쉽게 만들기 위해 jQuery 라이브러리를 사용한다 :

var license = '98798797'; 
var url = "http://mydomin.co.uk/myfile.php?postcode="+escape($("#field1").val())+'&license='+escape(license); 

$.getJSON(url+'&callback=?', function(data) { 
    var val = data.address1 + ", " + data.address2 + ", " + data.address3 + ", " + data.address4 + ", " + data.postcode; 
    var opt = $('option').text(val).val(val); 
    $("#addrlist").append(opt); 
}); 

이 코드가 지금 얼마나 짧은보기?

Btw json 데이터를 배열로 처리 했으므로 배열이 아닙니다 (예 : data['address1']). 구문 분석 된 json이 개체이기 때문에 data.address1으로 변경했습니다.

또한 오류 검사는 단순히 nescessary가 아니기 때문에 삭제되었습니다.

p.s 나는 JSONP는 크로스 도메인 Ajax 용이기 때문에 callback=?이 그것을 JSONP 아약스 요청을 추가.

+0

다시보십시오. 이 코드는 이미 JSONP 요청을하고 있습니다. – Guffa

+0

그의 코드에서는 jQuery와 같이 추가 할 때 추가해야합니다. –

+0

예,하지만 코드에 AJAX가 없다고 말한 것입니다. – Guffa