2013-04-25 2 views
0

본사 웹 사이트 www.phmotorcycles.co.uk/parts/brakes.html의 생산 및 테스팅 환경을 보유하고 있습니다. 페이지의 오른쪽에는 일련의 필터 컨트롤이 있습니다. 이제는 테스트 환경에서 완벽하게 작동합니다.반송 된 json 응답이 인식되지 않습니다.

[{"value":"ktm"}]

함수 호출은 다음과 같다 :

function loadFilters(p,l,c) { 
$.post('../supportScripts/productFilters.asp',{ 
    level: l, 
    productManufacturer: $("#partMan").val(), 
    productGroup: p, 
    bikeModel: $("#partBM").val(), 
    modelYear: $("#partMY").val(), 
    ajax: 'false'}, function(data) { 

     var sel = $("#" + c); 
     var s = jQuery.parseJSON(data); 
     sel.empty(); 
     sel.append('<option value=\'0\'>Please Select</option>'); 
     for (var i=0; i<s.length; i++) { 
      sel.append('<option value="' + s[i].value + '">' + s[i].value.toUpperCase() + '</option>'); 
     } 
    }); 
} 

문제 I 전화가 데이터베이스에서 JSON 응답을 반환하는 ASP 페이지로 구성되어 페이지로드

점점 파이어 폭스는 null로보고로 루프에 대한 것입니다.

두 환경에서 내 코드를 모두 비교했으며 데이터베이스의 저장 프로 시저와 동일합니다.

이 게임은 당분간 저를 혼란스럽게 만들었습니다. 필자도 그것을 통해 실행했고 요청 헤더와 응답은 라이브 서버에서 중단 될 때까지 동일합니다.

아무도 내가 이것을 어떻게 고칠 수 있을지에 대한 제안이 있습니까?

+0

http://jsfiddle.net/vKgdL/ 작품 데이터는 정확히 다음과 같습니다 :'[{ "value": "ktm"}]'? – Kasyx

+0

두 서버에서 데이터 값이 동일합니까? –

+0

예, 두 환경에서 응답이 동일합니다. – EvilKermitSaurus

답변

0

jQuery.parseJSON을 사용할 필요가 없습니다. 귀하의 서버가 Content-type: application/json을 반환하므로 jQuery가 귀하를 위해 그것을 파싱합니다. Content-type을 사용하여 AJAX 호출의 반환 유형을 "지능적으로 추측합니다".

이되어야합니다. 네 번째 매개 변수는 $.post, 'json'으로 전달됩니다. 이렇게하면 jquery가 JSON을 기대하고 있으며 Content-type이 잘못되어 있어도 JSON을 구문 분석 할 수 있습니다.

function loadFilters(p,l,c) { 
    $.post('../supportScripts/productFilters.asp',{ 
     level: l, 
     productManufacturer: $("#partMan").val(), 
     productGroup: p, 
     bikeModel: $("#partBM").val(), 
     modelYear: $("#partMY").val(), 
     ajax: 'false' 
    }, function(data) { 
     var sel = $("#" + c); 
     sel.empty(); 
     sel.append('<option value="0">Please Select</option>'); 
     for (var i=0; i < data.length; i++) { 
      sel.append('<option value="' + data[i].value + '">' + data[i].value.toUpperCase() + '</option>'); 
     } 
    }, 'json'); 
} 
+1

그럼 난 원숭이 삼촌이 될거야 !! 그것은 트릭을했다! !! 정말 고맙습니다. – EvilKermitSaurus

+0

프로덕션 환경에서 작동하지 않고 테스트 환경에서 작동하지 않는 이유는 무엇입니까? – EvilKermitSaurus

+0

@GrahamCole : 테스트 환경에서 보내는 '컨텐츠 유형'은 무엇입니까? 'application/json'이 아니라면 (아마도'text/html'이었습니다), jQuery는 당신을 위해 그것을 파싱하지 않을 것이고, 객체 대신에 원시 문자열을 돌려 주었을 것입니다. –

관련 문제