다음과 같이 JSON을 반환하는 AJAX 호출이 있습니다.
$(document).ready(function () {
$.ajax({
type: 'GET',
url: 'http://example/functions.php',
data: { get_param: 'value' },
success: function (data) {
var names = data
$('#cand').html(data);
}
});
});
#cand
div 안에 나는 얻을 것이다 :
[ { "id" : "1", "name" : "test1" },
{ "id" : "2", "name" : "test2" },
{ "id" : "3", "name" : "test3" },
{ "id" : "4", "name" : "test4" },
{ "id" : "5", "name" : "test5" } ]
이 데이터를 반복하고 각 이름을 div에 배치하려면 어떻게합니까?
답변
서버 측 스크립트가 올바른 Content-Type: application/json
응답 헤더를 설정하지 않았다고 가정하면 dataType: 'json'
매개 변수 를 사용하여 jQuery에 이것이 JSON임을 표시해야합니다 .
그런 다음 $.each()
함수를 사용 하여 데이터를 반복 할 수 있습니다 .
$.ajax({
type: 'GET',
url: 'http://example/functions.php',
data: { get_param: 'value' },
dataType: 'json',
success: function (data) {
$.each(data, function(index, element) {
$('body').append($('<div>', {
text: element.name
}));
});
}
});
또는 $.getJSON
방법을 사용하십시오 :
$.getJSON('/functions.php', { get_param: 'value' }, function(data) {
$.each(data, function(index, element) {
$('body').append($('<div>', {
text: element.name
}));
});
});
답변
설정 dataType:'json'
하면 JSON이 구문 분석됩니다.
$.ajax({
type: 'GET',
url: 'http://example/functions.php',
data: {get_param: 'value'},
dataType: 'json',
success: function (data) {
var names = data
$('#cand').html(data);
}
});
또는 다음을 사용할 수 있습니다 parseJSON
.
var parsedJson = $.parseJSON(jsonToBeParsed);
그런 다음 다음을 반복 할 수 있습니다.
var j ='[{"id":"1","name":"test1"},{"id":"2","name":"test2"},{"id":"3","name":"test3"},{"id":"4","name":"test4"},{"id":"5","name":"test5"}]';
…을 사용하여 $().each
:
var json = $.parseJSON(j);
$(json).each(function (i, val) {
$.each(val, function (k, v) {
console.log(k + " : " + v);
});
});
답변
다음 코드를 시도하면 내 프로젝트에서 작동합니다.
//start ajax request
$.ajax({
url: "data.json",
//force to handle it as text
dataType: "text",
success: function(data) {
//data downloaded so we call parseJSON function
//and pass downloaded data
var json = $.parseJSON(data);
//now json variable contains data in json format
//let's display a few items
for (var i=0;i<json.length;++i)
{
$('#results').append('<div class="name">'+json[i].name+'</>');
}
}
});
답변
$(document).ready(function () {
$.ajax({
type: 'GET',
url: '/functions.php',
data: { get_param: 'value' },
success: function (data) {
for (var i=0;i<data.length;++i)
{
$('#cand').append('<div class="name">data[i].name</>');
}
}
});
});
답변
그 코드를 사용하십시오.
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "Your URL",
data: "{}",
dataType: "json",
success: function (data) {
alert(data);
},
error: function (result) {
alert("Error");
}
});
답변
좋아, 나는 같은 문제가 있었고 다음과 같이 제거 []
하여 이것을 고쳤다 [{"key":"value"}]
.
- PHP 파일에서 다음과 같이 인쇄하는지 확인하십시오.
echo json_encode(array_shift($your_variable));
- 당신의 성공 함수에서 이것을하십시오
success: function (data) {
var result = $.parseJSON(data);
('.yourclass').append(result['your_key1']);
('.yourclass').append(result['your_key2']);
..
}
또한 원하는 경우 반복 할 수 있습니다
답변
위의 모든 솔루션에 동의하지만이 문제의 근본 원인을 지적하려면 위의 모든 코드에서 주요 역할을 수행하는 사람은 다음과 같습니다.
dataType:'json'
선택 사항 인이 행을 놓치면 서버에서 리턴 된 데이터는 전체 길이 문자열 (기본 리턴 유형)로 처리됩니다. 이 코드 줄을 추가하면 가능한 json 문자열을 json 객체로 변환하도록 jQuery에 알립니다.
json 데이터 객체가 필요한 경우 모든 jQuery ajax 호출에서이 행을 지정해야합니다.