programing

JQuery.ajax 성공 데이터의 JSON 해석

madecode 2023. 2. 27. 22:08
반응형

JQuery.ajax 성공 데이터의 JSON 해석

JQery.ajax 콜에서 JSON 오브젝트의 내용을 얻을 수 없습니다.내 전화:

$('#Search').click(function () {
    var query = $('#query').valueOf();
    $.ajax({
        url: '/Products/Search',
        type: "POST",
        data: query,
        dataType: 'application/json; charset=utf-8',
        success: function (data) {
            alert(data);
            for (var x = 0; x < data.length; x++) {
                content = data[x].Id;
                content += "<br>";
                content += data[x].Name;
                content += "<br>";
                $(content).appendTo("#ProductList");
               // updateListing(data[x]);
            }
        }
    });
});

"alert(data)"가 다음을 표시하므로 JSON 개체가 올바르게 반환되고 있는 것 같습니다.

[{"Id": "1", "Name": "Shirt"}, {"Id": "2", "Name":"Pants"}]

그러나 다음을 사용하여 페이지에 ID 또는 이름을 표시하려고 하면 다음과 같이 표시됩니다.

content = data[x].Id;
content += "<br>";
content += data[x].Name;
content += "<br>";

페이지에 「마이너스」를 되돌립니다.내가 뭘 잘못하고 있지?

도와 주셔서 감사해요.

데이터는 JSON의 문자열 표현으로 반환되며 JavaScript 개체로 다시 변환되지 않습니다.를 합니다.dataType딱 just just just to'json'이치노

다음을 사용할 것을 권장합니다.

var returnedData = JSON.parse(response);

JSON 문자열(텍스트만 있는 경우)을 JavaScript 개체로 변환합니다.

정상적으로 동작합니다.예:

$.ajax({
    url: "http://localhost:11141/Search/BasicSearchContent?ContentTitle=" + "تهران",
    type: 'GET',
    cache: false,
    success: function(result) {
        //  alert(jQuery.dataType);
        if (result) {
            //  var dd = JSON.parse(result);
            alert(result[0].Id)
        }

    },
    error: function() {
        alert("No");
    }
});

마지막으로 이 문장을 사용해야 합니다.

result[0].Whatever

대신 을 사용)가하지 않도록 방법 중 는 'json'에 되어 있는지 입니다.alert 때 ★★★★

alert(data)

데이터가 문자열이면 포함된 모든 것을 인쇄합니다.그러나 인쇄하는 경우 json 오브젝트입니다.경보에 다음과 같은 응답이 표시됩니다.

[object Object]

이 응답이 있으면 오브젝트(이 경우 json)로 사용할 수 있습니다.

따라서 다음과 같이 문자열을 사용하기 전에 먼저 json으로 변환해야 합니다.

JSON.parse(data)

음... 거기까지 4분의 3 정도...JSON은 이미 텍스트로 작성되어 있습니다.

문제는 이 문자열이 전송된 필드와 관련된 속성을 가진 JavaScript 개체인 것처럼 보인다는 것입니다.

그건...그냥 끈이야.

"content = data[x]와 같은 쿼리입니다.ID;"는 JavaScript가 보고 있는 문자열에 연결된 이러한 속성을 찾지 못하기 때문에 실패할 수밖에 없습니다.다시 말하지만, 그냥 끈이야

JSON으로서 데이터를 간단하게 해석할 수 있습니다.네... JSON 객체의 구문 분석 방법

myResult = JSON.parse(request.responseText);

myResult는 AJAX를 통해 전송된 속성을 포함하는 javascript 객체입니다.

그렇게 하면 당신이 시도하고 있는 것처럼 그것을 처리할 수 있을 것이다.

ECMA5 추가 시 JSON.parse가 추가된 것 같습니다.그래서 현대적이라면 이 문제를 자연스럽게 처리할 수 있을 겁니다.화석을 처리해야 하는 경우 jQuery 또는 JSON2와 같은 외부 라이브러리를 사용해 볼 수도 있습니다.

참고로, 이것은 Andy E가 여기 있는 다른 누군가를 위해 이미 답한 것입니다.

편집 - '공식 또는 신뢰할 수 있는 소스'에 대한 요청을 확인했습니다.아마 가장 신뢰할 수 있는 코드 중 하나는 John Resig ~ECMA5 JSON ~인 것 같습니다.원어민 JSON 지원에 관한 실제 ECMA5 사양에 링크하고 싶지만 마른 사양보다는 Resig와 같은 마스터 사양을 참조하고 싶습니다.

jquery를 사용해 보세요.eachjson 객체를 통과하는 함수:

$.each(data,function(i,j){
    content ='<span>'+j[i].Id+'<br />'+j[i].Name+'<br /></span>';
    $('#ProductList').append(content);
});

jQuery parseJ를 사용할 수 있습니다.SON 방식:

var Data = $.parseJSON(response);

입력 유형 버튼

<input type="button" Id="update" value="Update">

펄에서 AJAX로 폼을 정상적으로 올렸습니다.양식을 게시한 후 컨트롤러는 다음과 같은 JSON 응답을 반환합니다.

$(function() {

    $('#Search').click(function() {
        var query = $('#query').val();
        var update = $('#update').val();

        $.ajax({
            type: 'POST',
            url: '/Products/Search/',
            data: {
                'insert': update,
                'query': address,
            },
            success: function(res) {
                $('#ProductList').empty('');
                console.log(res);
                json = JSON.parse(res);
                for (var i in json) {
                    var row = $('<tr>');
                    row.append($('<td id=' + json[i].Id + '>').html(json[i].Id));
                    row.append($('<td id=' + json[i].Name + '>').html(json[i].Name));
                    $('</tr>');
                    $('#ProductList').append(row);
                }
            },
            error: function() {
                alert("did not work");
                location.reload(true);
            }
        });
    });
});

왜 이렇게 된 건지 모르겠어요서버가 헤더를 올바르게 설정하지 않았을 수 있습니다.확실하진 않다.승산 없는 일이지만, 이것을 시도해 보세요.

$.ajax({
    url : url,
    dataType : 'json'
})
.done(function(data, statusText, resObject) {
   var jsonData = resObject.responseJSON
})

jQuery API에서: 설정:dataType아무것도 지정되지 않은 경우 jQuery는 다음을 사용하여 추론을 시도합니다.$.parseJSON()응답의 MIME 유형(JSON 텍스트의 MIME 유형은 "application/json")을 기반으로 합니다(1.4에서는 JSON이 JavaScript 개체를 생성합니다).

또는 다음 설정을 할 수 있습니다.dataType로.json자동으로 변환합니다.

구문 분석 후 js 개체로 변환합니다.

success: function(response) {
    var content = "";
    var jsondata = JSON.parse(response);
    for (var x = 0; x < jsonData.length; x++) {
        content += jsondata[x].Id;
        content += "<br>";
        content += jsondata[x].Name;
        content += "<br>";
    }
    $("#ProductList").append(content);
}

데이터 유형 사용: 'json'

.NET에서는 액션 메서드/API 컨트롤러에서 Json(yourModel)을 반환할 수도 있습니다.

또한 반환된 JSON을 Jquery .ajax에서 다음과 같이 해석합니다.

복잡한 객체가 있는 경우: 직접 탐색합니다.

success: function (res) { 
$.each(res.YourObject, function (index, element) {                                
  console.log(element.text);
  console.log(element.value);
   });

 });

언급URL : https://stackoverflow.com/questions/5289078/parse-json-from-jquery-ajax-success-data

반응형