getJSON 동기
목표: 데이터베이스에 추가될 때마다($.ajax에서 submit_to_db.php로 넘어갈 경우) 데이터베이스에서 데이터를 가져와 main.php를 새로 고칩니다(draw_polygon을 통해 더욱 명확해집니다).
그래서 기본적으로 나는 메인을 가지고 있다.php는 데이터베이스에 저장되는 배열을 받기 위해 다른 php를 호출하고, 다른 php를 호출하여 배열을 반환하기 위해 json을 호출합니다.
$(document).ready(function() {
get_from_db();
$('#button_cancel').click(function(){
$.ajax({
url: 'submit_to_db.php',
type: 'POST',
data: {list_item: selected_from_list},
success: function(result){
...
get_from_db();
}
});
});
function get_from_db(){
$.getJSON('get_from_db.php', function(data) {
...
draw_polygon(data);
});
}
});
내 경우엔, 내가 한 일은get_from_db함수 호출getJSON실제로 데이터베이스에서 데이터를 가져오고 데이터를 사용하여draw_polygon하지만 그렇게 해야 하나요?저는 완전 초보라서 처음 해보는 거예요.getJSON솔직히 말하면 아약스도요그래서 질문입니다.비동기 기능은 실제로 어떻게 작동합니까?기능을 호출하는 대신 다른 회피책이 있습니까?get_from_db와 함께getJSON(동기화 되어 있지 않죠?그래서 기능 내에 없을 때는 페이지가 갱신되지 않는 건가요?)항상 - 좋아요$.ajax와 함께async: false(그런데 작동하지 않았습니다.)내 접근 방식은 효과가 있지만, 다른 더 좋은 방법이 있을지도 모른다고 생각했어요.방법을 배우고 싶어요.
좀 더 명확하게 하기 위해 다음과 같은 목표를 달성하고자 합니다.
@start/ 페이지, 데이터베이스에서 데이터 가져오기(현재 경유)getJSON)- 그리기 또는 그리기
canvas사용방법data - [완료] 버튼을 클릭하면 데이터베이스가 갱신됩니다.
- 데이터를 자동으로 다시 가져와 캔버스에 변경 내용을 다시 그리고 싶습니다.
$.getJSON()은 Ajax 설정을 사용하므로 글로벌 Ajax 설정을 다음과 같이 설정합니다.
// Set the global configs to synchronous
$.ajaxSetup({
async: false
});
// Your $.getJSON() request is now synchronous...
// Set the global configs back to asynchronous
$.ajaxSetup({
async: true
});
Asynchronously는 요청이 백그라운드에서 실행 중임을 의미하며, 응답을 받으면 함수를 호출합니다.이 방법은 결과를 얻고 싶지만 요청 내에서 앱을 사용할 수 있는 경우에 가장 적합합니다.직접 응답하려면 동기화 요청을 확인하십시오.이 요청은 응답을 받을 때까지 스크립트 실행을 일시 중지하고 응답을 받을 때까지 사용자는 아무것도 수행할 수 없습니다.다음 방법으로 전환할 수 있습니다.
async: false,
예를 들어 다음과 같습니다.
$.ajax({
url: "myurl",
async: false,
...
})
$.getJSON()은 다음 내용을 요약한 것으로 문서에 기재되어 있듯이 설정을 받아들이지 않습니다.
$.ajax({
dataType: "json",
url: url,
data: data,
success: success
});
따라서 요청을 다시 작성하기만 하면 async:false가 예상대로 작동합니다.
$.getJSON()의 약어 표기법입니다.$.ajax()동기하도록 설정할 수 있습니다(jQuery.getJ 참조).SON 및 JQuery.ajax):
$.ajax({
dataType: "json",
url: url,
data: data,
async: false,
success: function(data) {
...
draw_polygon(data);
}
});
다만, 동기 콜은 피하도록 해 주세요.jQuery doc에서 인용(비동기 프로펠러 참조):
교차 도메인 요청 및 dataType: "jsonp" 요청은 동기 작업을 지원하지 않습니다.동기요구는 일시적으로 브라우저를 잠그고 요청이 활성화되어 있는 동안 모든 액션이 비활성화될 수 있습니다.
다음과 같이 jQuery Deferred를 시도할 수 있습니다.
var jqxhr = $.getJSON(url);
jqxhr.done(function(data) {
...
draw_polygon(data);
});
언급URL : https://stackoverflow.com/questions/13009755/getjson-synchronous
'programing' 카테고리의 다른 글
| 상대 포지셔닝을 끄려면 어떻게 해야 합니까? (0) | 2023.04.04 |
|---|---|
| ng-hide CSS 이행이 완료될 때까지 요소를 표시하지 않습니까? (1) | 2023.03.25 |
| 에 JSON 데이터를 해석하는 최선의 방법입니다.NET 객체 (0) | 2023.03.25 |
| 지시문 '...'에 필요한 컨트롤러 'ngModel'을 찾을 수 없습니다. (0) | 2023.03.25 |
| 테이블에서 최대값으로 시작하는 Oracle 시퀀스를 작성하려면 어떻게 해야 합니까? (0) | 2023.03.25 |