programing

jQuery getJ올바른 JSON에 대한 SON 구문 오류

topblog 2023. 9. 10. 11:52
반응형

jQuery getJ올바른 JSON에 대한 SON 구문 오류

저는 다음 json 서류를 가지고 있습니다.

// json.json
[  
   {  
      "title":"title1",
      "value":12234
   },
   {  
      "title":"title2",
      "value":"some text"
   },
   {  
      "title":"title3",
      "value":"12qwerty234"
   },
   {  
      "title":"title4",
      "value":123.5
   }
]   

저는 jQuery를 사용해서 로딩하고 있습니다.코드는 다음과 같습니다.

$(document).ready(function(){
    $.getJSON("json.json", {},function(result){
        $.each(result, function(i, obj) {
            $("form").append($('<label for="'+i+'">'+obj.title+'</label>'));
            $("form").append($('<input id="'+i+'" value="'+obj.value+'" type="text"/><br>'));
        });
    });
});

문제는 파이어폭스에서 구문 오류가 발생한다는 것입니다.로딩합니다json.json로컬 파일로서.다음은 스크린샷입니다(오류는 "1라인의 구문 오류"라고 표시됨).

enter image description here

참고로 해당 양식이 성공적으로 생성되었습니다.

편집 : python을 실행할 때 Chrome의 다른 스크린샷입니다.SimpleHTTPServer:

enter image description here

이런 일이 발생하는 이유는 로컬 파일을 사용하고 있으므로 "text/xml"의 마임 유형이 암시되므로 Firefox는 XML로 구문 분석을 시도합니다..responseXML기본 XHR 객체에 대한.물론 실패합니다.

이를 무시하거나 다음을 지정할 수 있습니다.mimeType당신 자신:

$.ajax({
    dataType: "json",
    url: "json.json",
    mimeType: "application/json",
    success: function(result){
        $.each(result, function(i, obj) {
            $("form").append($('<label for="'+i+'">'+obj.title+'</label>'));
            $("form").append($('<input id="'+i+'" value="'+obj.value+'" type="text"/><br>'));
        });
    }
});

PS: 일반 XHR을 사용하면 사용할 수 있습니다.

웹 서버에서 동일한 코드를 실행했는데 구문 오류가 발생하지 않습니다.file:///에서 로드할 때 구문 오류가 발생하지만 기본적으로 "scheme"입니다.

json 파일 때문에 발생한 오류는 로컬 파일인 것 같습니다.nginx나 apache 같은 웹 서버를 로드해 보십시오.

json을 올바르게 설정하는 동안 json에서 구문 오류 4라는 동일한 문제에 직면했습니다.

해결책을 찾지 못하고 json을 php array로 만드는 방법을 사용했습니다.그래도 유용하다고 판단되면 똑같이 사용할 수 있습니다.

샘플 코드:

$json = '
   {  

      "title":"title4",
      "value":123.5
   }';

   $json = str_replace("{", "", $json);
   $json = str_replace("}", "", $json);

   $jsonArr = explode(",", $json);
   $jsonArray = array();

   foreach($jsonArr as $json){

        $jsonTmpArr = explode(":", $json);
        $jsonArray[trim($jsonTmpArr[0])] = trim($jsonTmpArr[1]);
   }
   
print_r($jsonArray);

언급URL : https://stackoverflow.com/questions/18291390/jquery-getjson-syntax-error-on-a-valid-json

반응형