>source

이것은 내 code입니다:

$.ajax({
    url: "some_url/",
    type: "GET",
    dataType: "json",
    success: function(data){
        console.log(data);
        data.forEach(function(element){
            console.log(element);
        });
    }
});

각각에 대해 작동하지 않는다는 오류가 발생합니다.데이터변하기 쉬운. 그런데 로그인을 하면데이터콘솔에

[{"모델": "app.mdl", "pk": 1, "필드": {"이름": "테스트", "순위": 1}}]

이것은 분명히 배열이고 반복 가능하므로 정확히 무엇이 잘못되었는지 알 수 없습니다.

편집:데이터를 통해 반환됩니다.JsonResponse장고에서.

하지만 배열에는 하나의 요소만 있습니다.

Jack Bashford2022-02-02 21:54:49

실제 데이터 세트로 테이블을 채우기 전에 함수를 확인하는 데 사용하는 샘플일 뿐입니다.

absolutelydevastated2022-02-02 21:54:49
  • 답변 # 1

    data는 JSON 문자열이라고 생각합니다. 부터각각()는 배열 함수이고 JSON 문자열에서 구현하려고 하면 오류가 발생합니다.

    "잡히지 않은 TypeError: data.forEach는 함수가 아닙니다"

    사용하기 전에 데이터를 구문 분석해야 합니다.각각():

    JSON.parse()메서드는 JSON 문자열을 구문 분석하여 문자열이 설명하는 JavaScript 값 또는 객체를 구성합니다. 결과 객체가 반환되기 전에 변형을 수행하기 위해 선택적 되살리기 기능이 제공될 수 있습니다.

    data= JSON.parse(data);
    

    데모:

    var data= JSON.stringify([{"model": "app.mdl", "pk": 1, "fields": {"name": "test", "rank": 1}}]);
    data= JSON.parse(data);
    data.forEach(function(element){
        console.log(element);
    });

    따라서 성공은 다음과 같아야 합니다.

    success: function(data){
        data= JSON.parse(data);
        console.log(data);
        data.forEach(function(element){
            console.log(element);
        });
    }
    

  • 답변 # 2

    성공 함수를 다음으로 변경합니다.JSON.parse()JSON 문자열을 반복하려면 함수가 필요합니다.

    success: function(data){
            data= JSON.parse(data);
            console.log(data);
            data.forEach(function(element){
                console.log(element);
            });
    

  • 답변 # 3

    당신의데이터응답은 배열처럼 보이지만 문자열입니다. 연결하려는 API에 액세스할 수 있는 경우 전송하는 응답이 배열인지 확인할 수 있지만 단순히 구문 분석하지 않는 경우데이터사용하여 응답JSON.parse()트릭을해야합니다.

  • 답변 # 4

    문자열 또는 JSOn 배열인지 확인하십시오.

    if(typeof(data)=== "string"){data= JSON.parse(data)}
     data.forEach(function(element){
                console.log(element);
            });
    

  • 답변 # 5

    데이터가 JSON 문자열인지 확인하십시오.

    data= "[{"model":"app.mdl","pk":1,"fields":{"name":"test","rank":1}}]"
    

    그렇다면 JSON.parse(data)를 수행하고 이에 대해 forEach를 수행해야 합니다.

  • 이전 PHP는 여전히 2MB보다 큰 파일 업로드를 허용하지 않습니다.
  • 다음 경고: array_filter()는 매개변수 1이 1193행의 wp-includes/kses.php 배열일 것으로 예상합니다.