2013-10-31 6 views
0

아약스 요청이 제공 될 때까지 드롭 다운 및 브라우저가 잠기는 문제가 있습니다. ASYNC를 JSON Ajax 요청에 대해 False로 설정해야한다는 것을 알고 있으므로 Ajax 요청이 수신 될 때까지 누군가가 드롭 다운 및 페이지 잠그지 않도록 코드를 수정하도록 도와 주시면 감사하겠습니다.ajax 요청을 통해 JSON을로드 할 때 어떻게 브라우저 잠금을 멈출 수 있습니까?

당신은 여기에서 확인할 수 있습니다

http://bit.ly/16QN1lA

나는 5 초를 추가했습니다. 문제를보다 분명하게하기 위해 data.php 파일을 잠자 요.

+0

이 왜 false로 설정해야합니까? 사실, jQuery의 해당 기능은 더 이상 사용되지 않습니다. http://stackoverflow.com/questions/11448011/jquery-ajax-methods-async-option-deprecated-what-now –

+0

true로 설정하면이 메시지가 표시됩니다. : catch되지 않은 구문 에러 : 예기치 않은 토큰 U 다음은 비동기과 같은 페이지로 설정의 진정한 http://bit.ly/1aJRYiC –

+0

@musical_coder 비동기 사이트'에 따르면 다음을 사용하는 경우 FALSE '은 사용되지 않습니다 jqXHR의 지연된 API. 약속 대신 이전 콜백을 사용하는 경우 jQuery에서 동기식 AJAX를 계속 사용할 수 있습니다. –

답변

0

당신이 비동기 AJAX와 오류를 얻고있는 이유는 기능이 즉시 서버로부터 응답을 받기 전에 잘되는 반환한다는 것입니다. 따라서 가비지 데이터에 JSON.parse()이 호출되어보고있는 오류의 원인이됩니다.

이 솔루션은 구문 분석을 사용하면 서버에서 응답을받을 후 일어날 수 있도록하는 것입니다 : 내가 jQuery를 $ .getJSON을 사용하기로 결정

if(year !=""){ 
    //Get vehicle json and store into vehicles_json 
    getJson(
     js_base_url, 
     function(makes_json) { 
      //Set makes equal to makes dropdown 
      var makes = $("#make"); 
      //empty dropdown 
      makes.empty(); 

      var makes_array = []; 
      //loop through makes_json json 
      $.each(makes_json, function() { 
        makes_array.push('<option value="', this.model_make_display, '">', this.model_make_display, '</option>'); 
      }); 
      makes.html(makes_array.join('')); 
     } 
    ); 
} 

function getJson(url, callBack) { 
    $.ajax({ 
    type: 'GET', 
    url: url, 
    dataType: 'json', 
    global: false, 
    success: function(json_response) { 
     callBack(json_response); 
    } 
}); 
} 
+0

이 방법이 효과적이지만,이 방법을 사용하면 모양이 좋지 않은 함수를 만들어야합니다. 함수 자체 내에서 루핑 대신 배열을 반환하는 방법은 없나요? –

+0

아니요, 위에서 말했듯이 서버에서 응답을 받기 전에 함수에서 돌아올 수 없습니다. "좋아 보이지 않는다"는 것이 무슨 뜻인지 확실하지 않습니다. 당신은'ajax()'호출을 복제하고 싶지 않다는 것을 의미합니까? 이 경우 콜백 함수를 전달하는 단일 함수에서'ajax()'만 호출하도록하십시오. 이 경우 코드 작성 방법을 보여주기 위해 코드를 변경했습니다. –

0

이 작업을 수행하는 다른 방법을 제안하겠습니다.

$.get(url, function(res){ 
data = JSON.parse(res); 
$(data).each(function(k,v){ 
    $('#makes').append(html) 
} 
} 
관련 문제