jQuery ajax request with json response, 어떻게 해야 하나요?
두 개의 post 값으로 ajax 요청을 보냅니다.첫 번째는 php 스크립트가 해석해야 하는 액션을 정의하는 "action"이고, 다른 하나는 스크립트를 해석해야 하는 사용자의 ID인 "id"입니다.
서버는 array() 내에서 6개의 값을 반환하고 PHP 함수를 사용하여 JSON으로 인코딩됩니다.json_encode();
내 응답 중 일부는 HTML이지만 JSON으로 인코딩하면 빠져나간다."/"
그렇게 되면"\/"
그걸 어떻게 끄죠?
또한 서버 응답을 받았을 때 이것을 jQuery에 표시하는 방법을 모를 때는 div에 모두 넣으면 요청한 숫자와 HTML 코드만 표시된다고 생각했지만 PHP로 인코딩된 배열로 표시됩니다.
PHP
$response = array();
$response[] = "<a href=''>link</a>";
$response[] = 1;
echo json_encode($response);
j쿼리:
$.ajax({
type: "POST",
dataType: "json",
url: "main.php",
data: "action=loadall&id=" + id,
complete: function(data) {
$('#main').html(data.responseText);
}
});
이걸 어떻게 JSON으로 만들죠?
에 전화해야 합니다.
$.parseJSON();
예를 들어 다음과 같습니다.
...
success: function(data){
var json = $.parseJSON(data); // create an object with the key of the array
alert(json.html); // where html is the key of array that you want, $response['html'] = "<a>something..</a>";
},
error: function(data){
var json = $.parseJSON(data);
alert(json.error);
} ...
http://api.jquery.com/jQuery.parseJSON/ 에서 확인하실 수 있습니다.
슬래시 문제가 해결되지 않는 경우:security.security quotes.security를 검색합니다.php 또는: function.slashes.php
주의:
여기 이 답변은 사용하려는 사용자를 위한 것입니다.$.ajax
와 함께dataType
로 설정된 속성json
그마저도 잘못된 응답 유형을 가지고 있습니다.의 정의header('Content-type: application/json');
서버의 경우 문제를 해결할 수 있지만,text/html
또는 다른 타입의$.ajax
메서드는 변환해야 합니다.json
. 이전 버전의 jQuery를 사용하여 테스트하고 버전 이후만 테스트합니다.1.4.4
그$.ajax
임의의 콘텐츠유형을 강제로 변환합니다.dataType
통과된.따라서 이 문제가 있는 경우 jQuery 버전을 업데이트해 보십시오.
우선, PHP 헤더를 JSON에 대응하도록 설정하면 도움이 됩니다.
header('Content-type: application/json');
다음으로, Ajax 콜을 조정하는 데 도움이 됩니다.
$.ajax({
url: "main.php",
type: "POST",
dataType: "json",
data: {"action": "loadall", "id": id},
success: function(data){
console.log(data);
},
error: function(error){
console.log("Error:");
console.log(error);
}
});
성공하면 수신한 응답이 진정한 JSON으로 선택되고 개체가 콘솔에 기록됩니다.
메모: 순수 html을 선택하고 싶다면 JSON에 다른 방법을 사용하는 것을 고려할 수도 있지만, 개인적으로 JSON을 사용하여 템플릿(핸들바 js 등)을 사용하여 html로 렌더링하는 것을 권장합니다.
마크업을 문자열로 작성하기 때문에 json으로 변환할 필요가 없습니다.모든 어레이 요소를 조합한 상태로 전송하면 됩니다.implode
방법.이거 먹어봐.
PHP 변경
$response = array();
$response[] = "<a href=''>link</a>";
$response[] = 1;
echo implode("", $response);//<-----Combine array items into single string
JS(dataType을 json에서html로 변경하거나 설정 안 함jQuery가 알아냅니다)
$.ajax({
type: "POST",
dataType: "html",
url: "main.php",
data: "action=loadall&id=" + id,
success: function(response){
$('#main').html(response);
}
});
바인드된 데이터와 함께 opcode를 송수신하여 javascript clientside 컨트롤러와 php 서버사이드 컨트롤러를 연결합니다.따라서 당신의 php 코드는 jsreceipient/listener의 응답 함수 델타로서 송신할 수 있습니다.
https://github.com/ArtNazarov/LazyJs 를 참조해 주세요.
영어가 서툴러서 미안해
이 코드를 사용해 보세요.데이터 유형이 JSON이므로 JSON 개체를 반환하므로 구문 분석 기능이 필요하지 않습니다.
$.ajax({
url : base_url+"Login/submit",
type: "POST",
dataType: "json",
data : {
'username': username,
'password': password
},
success: function(data)
{
alert(data.status);
}
});
언급URL : https://stackoverflow.com/questions/9098649/jquery-ajax-request-with-json-response-how-to
'programing' 카테고리의 다른 글
Wordpress - 미디어 라이브러리를 사용하여 이미지 가져오기 (0) | 2023.03.02 |
---|---|
타이머가 있는 Jquery/Ajax 콜 (0) | 2023.03.02 |
WooCommerce의 카테고리 및 하위 카테고리는 어떻게 DB에 저장됩니까? (0) | 2023.03.02 |
Angular 템플릿에서 개체를 디버깅하는 방법(html 파일) (0) | 2023.03.02 |
스프링 부트 1.2.3의 경우 JSON 시리얼라이제이션에서 ignore null 값을 설정하려면 어떻게 해야 합니까? (0) | 2023.03.02 |