jquery AJAX 콜을 디버깅하려면 어떻게 해야 하나요?
저는 Jquery와 AJAX가 협력하도록 노력하고 있습니다.지금까지의 큰 문제는 어디서 실수를 하고 있는지 알 수 없다는 것이었습니다.AJAX 콜을 디버깅하는 좋은 방법은 없습니다.
SQL 데이터베이스에 있는 권한 세트를 변경하는 기능 중 하나를 만들고 싶은 관리 페이지를 설정하려고 합니다..click 함수가 트리거되고 있는 것은 알고 있기 때문에 그 범위를 좁혔습니다만, AJAX 콜에서 SQL로의 체인의 어디에 문제가 있는지 알 수 없습니다.
내 .js 코드:
$('#ChangePermission').click(function(){
$.ajax({
url: 'change_permission.php',
type: 'POST',
data: {
'user': document.GetElementById("user").value,
'perm': document.GetElementById("perm").value
}
})
})
.disc 핸들러:
<?php
require_once(functions.php);
echo $_POST["user"];
try{
$DBH = mysql_start();
$STH = $DBH->prepare("INSERT INTO people ( username, permissions ) values (?, ?)");
$STH->bindParam(1, $_POST["user"]);
$STH->bindParam(2, $_POST["perm"]);
$STH->execute();
}
catch(PDOException $e){
echo $e->getMessage;
}?>
여기서 mysql_start는 다른 SQL 콜에서 정상적으로 사용하는PDO 함수의 셋업입니다.
며칠 동안 튜토리얼을 조사하고 찾아봤는데 뭐가 잘못됐는지 아무리 생각해도 모르겠어요.에러가 발생하고 있는 장소를 특정하기 위해서 사용할 수 있는 툴이 있습니까?이 특정 문제에 대한 답변에 관심이 있는 것은 분명하지만 디버깅을 어디서부터 시작해야 할지 모르겠다는 것이 가장 큰 문제라고 생각합니다.도와주셔서 감사합니다!
다음과 같이 성공 콜백과 오류 콜백을 추가하여 JQuery 콜을 보다 견고하게 합니다.
$('#ChangePermission').click(function() {
$.ajax({
url: 'change_permission.php',
type: 'POST',
data: {
'user': document.GetElementById("user").value,
'perm': document.GetElementById("perm").value
},
success: function(result) { //we got the response
alert('Successfully called');
},
error: function(jqxhr, status, exception) {
alert('Exception:', exception);
}
})
})
거의 모든 최신 브라우저를 사용하여 네트워크 탭을 익혀야 합니다.AJAX 콜의 디버깅 방법에 대해서는, 이 SO 투고를 참조해 주세요.
브라우저(shift+ctrl+i) 또는 Firebug에서 "네트워크" 탭을 사용할 수 있습니다.
하지만 더 나은 해결책은 브라우저와 서버 간의 트래픽을 감시하고 캐치하기 위해 Fiddler와 같은 외부 프로그램을 사용하는 것입니다.
Mozilla Firefox라는 하는 것이 를 firebug
.
페이지에서 f12 in mozilla를 누르면 firebug가 열립니다.
net
과 이 에서는 firebug 탭으로 합니다.xhr
5가지 선택지가 .xhr
Params
Headers
Response
HTML
★★★★★★★★★★★★★★★★★」Cookies
so so so so so so so so so soresponse
★★★★★★★★★★★★★★★★★」html
아약스
무슨 문제가 있으면 알려주세요.
Firefox(FF) 확장으로서의 Firebug는 현재(2017년 1월 1일 현재) AJAX 호출에서 직접 javascript 응답을 디버깅하는 유일한 방법입니다.아쉽게도 개발이 중단되었습니다.또한 Firefox 50 이후 호환성 문제로 인해 Firebug를 설치할 수 없게 되었습니다:- (F 개발 도구 UI를 에뮬레이트하여 Firebug UI를 불러옵니다.
유감스럽게도 FF 네이티브 개발자 툴은 AJAX 호출에 의해 직접 반환된 javascript를 디버깅할 수 없습니다.크롬 개발 도구에도 동일하게 적용됩니다.
현재 프로젝트에서 XHR 호출에서 JS를 디버깅해야 하므로 이 문제로 인해 FF 업그레이드를 비활성화해야 합니다.여기서 좋은 소식은 아닙니다. JS 응답을 디버깅하는 기능이 FF/Chrome 개발자 도구에 곧 통합되기를 바랍니다.
Chrome 개발 도구로 2020년 대응
XHR 요청을 디버깅하려면:
- Chrome DEV 도구 열기(F12)
- 콘솔에서 Ajax URL을 마우스 오른쪽 버튼으로 클릭합니다.
GET 요청의 경우:
- 새 탭에서 열기를 클릭합니다.
POST 요청의 경우:
네트워크 패널에서 표시를 클릭합니다.
[네트워크]패널:
당신의 요청을 클릭하세요.
자세한 내용을 보려면 응답 탭을 클릭하십시오.
이 jquery.success 설정을 확인하면 success 함수를 사용할 수 있습니다.
$('#ChangePermission').click(function(){
$.ajax({
url: 'change_permission.php',
type: 'POST',
data: {
'user': document.GetElementById("user").value,
'perm': document.GetElementById("perm").value
}
success:function(result)//we got the response
{
//you can try to write alert(result) to see what is the response,this result variable will contains what you prints in the php page
}
})
})
error() 함수를 사용할 수도 있습니다.
이것이 너에게 도움이 되길 바란다.
Firebig 를 인스톨 하고, 에러가 발생하고 있는 장소를 확인합니다.또한 PHP에서 오류 메시지를 반환하기 위해 ajax 호출에 콜백을 설정할 수도 있습니다.예.
error: function(e){
alert(e);
}
jQuery를 로드한 후 코드 앞에 추가합니다.
$(window).ajaxComplete(function () {console.log('Ajax Complete'); });
$(window).ajaxError(function (data, textStatus, jqXHR) {console.log('Ajax Error');
console.log('data: ' + data);
console.log('textStatus: ' + textStatus);
console.log('jqXHR: ' + jqXHR); });
$(window).ajaxSend(function () {console.log('Ajax Send'); });
$(window).ajaxStart(function () {console.log('Ajax Start'); });
$(window).ajaxStop(function () {console.log('Ajax Stop'); });
$(window).ajaxSuccess(function () {console.log('Ajax Success'); });
다음은 ajax 호출 후 javascript console.log에 php 오류를 디버깅하고 가져오기 위해 수행하는 작업입니다.
$('#ChangePermission').click(function () {
$.ajax({
url: 'change_permission.php',
type: 'POST',
data: {
'user': document.GetElementById("user").value,
'perm': document.GetElementById("perm").value
},
success: function (data) {
console.log(data);
},
error: function (data) {
console.log(data);
}
});
});
php측에서는 string concat에 반환되는 모든 에러와 php 에러메시지가 있는 경우 이를 포함한 json 부호화 응답으로서 에코하는 것으로 시작합니다.
<?php
error_reporting(E_ALL);
require_once(functions . php);
$result = "true";
$DBH = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpass);
$DBH->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$STH = $DBH->prepare("INSERT INTO people ( username, permissions ) values (?, ?)");
if (isset($_POST["user"]) && isset($_POST["perm"])) {
$STH->bindParam(1, $_POST["user"], PDO::PARAM_STR);
$STH->bindParam(2, $_POST["perm"], PDO::PARAM_STR);
}
try {
$STH->execute();
} catch (PDOException $e) {
$result .= $e->getMessage;
}
echo json_encode($result);
?>
언급URL : https://stackoverflow.com/questions/21897398/how-do-i-debug-jquery-ajax-calls
'programing' 카테고리의 다른 글
JSONEncoder를 사용한 프로토콜 준거 유형의 인코딩/복호화 (0) | 2023.03.28 |
---|---|
React 컴포넌트에 CSS 파일을 Import하는 방법 (0) | 2023.03.28 |
Angular를 사용한 W3C 검증JS 디렉티브 (0) | 2023.03.28 |
어떻게 내 angular.js ng-model에 json을 로드하지? (0) | 2023.03.28 |
웹 팩 및 글꼴 페이스로 글꼴 로드 (0) | 2023.03.28 |