programing

jQuery.getJSON 및 jQuery.parseJSON return [객체]?

lastmoon 2023. 3. 13. 20:45
반응형

jQuery.getJSON 및 jQuery.parseJSON return [객체]?

편집: 저는 이 질문으로 "유명한 질문" 배지를 받았습니다.그래서 저는 이 질문으로 돌아가서 저에게 무슨 일이 일어났는지 바로 맨 위에 붙여놓아야겠다고 생각했어요.검색하는 사람들이 바로 답을 얻을 수 있도록 말이죠.

기본적으로는 JSON은 처음이었고, JSON은 (분명히) 모든 것이 들어있기 때문에 오브젝트입니다!그래서 JSON 데이터를 문자열로 줄 수 있을 거라고 기대하면서 "Javascript, 이 JSON 데이터로 경고를 띄워줘"라고 생각했습니다.하지만 javascript는 그렇게 하지 않기 때문에 (좋아요!) "여보세요, [객체]는 이렇게 표시해요."

가 할 수 건 alert(obj.DATA[0][1])그 부분을 보여 줬을 거예요

가 정말 것은 JSON 되고 있는지 이었는데, 데이터로 확인할 수 .JSON.stringify.

어쨌든, 정기적으로 예정된 질문으로 돌아가겠습니다!


Ajax 콜을 사용하여 JSON 데이터를 가져오려고 하는데 jQuery가 JSON을 좋아하지 않는 것 같습니다.

예를 들어 다음과 같습니다.

function init2() {
    alert("inside init2");
    jQuery.ajax({
        url: "/Mobile_ReportingChain.cfm",
        type: "POST",
        async: false,
        success: function (data) {
            alert(data);
            var obj = jQuery.parseJSON(data);
            alert(obj);
        }
    });
}

경고(데이터)에서 다음과 같이 수신됩니다.

    {"COLUMNS":["MFIRST_NAME","MLAST_NAME","MMDDL_NAME","MEMPLY_ID","MAIM_NBR","EMPLY_ID"],
    "DATA":[

["FNAME1          ","LNAME1                  ","MI1              ","000-14-7189","026-0010","000-62-7276"]      

,["FNAME2           ","LNAME2                    ","MI2              ","000-01-2302","101-1850","000-14-7189"]  

,["FNAME3           ","LNAME3                  ","MI3              ","000-91-3619","102-1000","000-01-2302"]    

,["FNAME4         ","LNAME4                  ","MI4              ","000-25-9687","102-1000","000-91-3619"]  

]}  

JSONLint가 유효한 JSON이라고 합니다.alert(obj)는 다음과 같은 정보를 제공합니다.

[object Object]

, 「」의dataType: "json" ★★★★★★★★★★★★★★★★★」"text json"만 하다[object Object]alert(data).

이걸 꼭 알아내고 싶은데, 왜 이런 짓을 하는지 아는 사람 있나요?jQuery는 처음이라서 각 열의 배열을 얻는 것이 목표입니다.같은 코드를 사용하고 있는 것이, 다른 페이지에서도 동작하고 있기 때문에, 가장 신경이 쓰입니다.

이 함수는 텍스트 문자열만 표시할 수 있습니다.유일한 매개 변수로서 문자열 또는 개체를 사용합니다.그러나 개체는 표시할 수 있는 문자열로 변환됩니다.

통해 할 때 jQuery는 JSON을 합니다.$.ajax()JSON의 JavaScript를 사용합니다.의 ★★★★★★★★★★★★★★★★★.dataJSON의 JavaScript입니다.

★★alert()문자열만 할 수 하려고 할 에만 표시됩니다.dataobject,object로 됩니다.은 JavaScript이다.[object Object]

debug-purpose를 사용할 수 .console.log(data) 도구의 할 수 .그런 다음 브라우저 개발자 도구의 콘솔을 통해 개체와 개체 내용을 검사할 수 있습니다.

function init2() {
    jQuery.ajax({
        url: "/Mobile_ReportingChain.cfm",
        type: "POST",
        dataType: "json",
        async: false,
        success: function (data) {
            console.log(data);
        }
    });
}

어떤 이유로든 여전히 JSON 데이터에 경고하고 싶은 경우 다음 명령을 실행해야 합니다.data오브젝트를 JSON 문자열로 되돌립니다.그러기 위해서는, 다음을 사용할 수 있습니다.

alert(JSON.stringify(data));

끈이 필요하다

 var obj = $.parseJSON(JSON.stringify(data));

그 오브젝트를 에 송신해 보다console.log. 내용물이 더 선명하게 표시됩니다.

또, 넣어주세요.dataType: 'json'제거하다parseJSON다 똑같으니까

원래 이렇게 하는 거야JSON이 javascript 객체가 됩니다.그런 다음 해당 개체를 일반 Javascript 개체로 조작할 수 있습니다.

data.COLUMNS예를 들어 어레이를 반환해야 합니다.

[object Object]javascript 객체의 문자열 표현입니다.

개체의 속성에 액세스해 보십시오.

alert(data.COLUMNS[0]);

jQuery.parseJSONjson 문자열을 json 개체로 변환하여 alert(obj)에 표시됩니다.[object Object]물건이기 때문에.

뭘 보고 싶다면obj포함 후 사용console.log(obj)콘솔 로그 메시지를 확인합니다.

$.getJSON( "UI/entidades.json.php", function(data){
	result = JSON.stringify(data);
	alert(result)
	console.log(result)
})

(당황한 문제인 건 알지만 조금만 참아주세요.애초에 왜 이런 문제가 생겼는지 설명할 수 있도록 말이다.)MySQL 테이블에서 레코드를 삭제한 공백을 메우고 싶었습니다(기본 키는 자동 증가).그래서 내 아이디 사이에 삭제된 레코드에 키가 없어졌을 때 말이야잃어버린 열쇠를 보여줄 수 있는 방법을 찾아봤어요그래서 루프를 통해 어레이를 생성한 코드를 만들고 존재하는 키를 삭제하여 에코가 어레이를 지원했습니다(물론 json_encode는 어레이를 지원).하지만 놀랍게도 제가 무엇을 하든 결국엔 항상 [객체]를 갖게 되었습니다.그것이 문제였던 것이 나를 많이 당황하게 했다.


솔루션:어레이를 재정비하고 있을 뿐인데 문제는 다 해결됐어요.

아래에 간단한 예를 제시하겠습니다.

<!DOCTYPE html>
<html>
  <head>
    <script src="../js/jquery/jquery3.x/jquery-3.3.1.min.js"></script>
    <title></title>
    <script type="text/javascript">
      $(function () {
        $('#generate').click(function () {
          $.get('tmp2.php?tab=1', function (data) {
            var retStr = '<table>';
            var par = $.parseJSON(data);
            $(par).each(function () {
              retStr += '<tr><td>' + this + '</td></tr>';
            });
            retStr += '</table>';
            $('#res').html(retStr);
          });
        });
      });
    </script>
  </head>
  <body>
        <input type="button" value="generate" id="generate" />
        <div id="res"></div>
  </body>
</html>

그리고 컨트롤러는

<?php
if (!empty($_GET['tab'])) {
  $ids = array();
  for ($i = 0; $i < 50; $i++)
    $ids[] = $i;
  for ($i = 0; $i < 50; $i = $i + 2)
    unset($ids[$i]);
  // echo json_encode($ids); // this will generate [object Object]
  $res = array();
  foreach ($ids as $key => $value) {
    $res[] = $value;
  }
  echo json_encode($res);
  exit();
}
?>

언급URL : https://stackoverflow.com/questions/9218900/jquery-getjson-and-jquery-parsejson-return-object-object

반응형