Jquery Ajax POST에서 400개의 잘못된 요청 오류가 발생함
Jquery를 사용하여 Ajax POST 요청을 보내려고 하는데 400개의 잘못된 요청 오류가 발생했습니다.
코드는 다음과 같습니다.
$.ajax({
type: 'POST',
url: "http://localhost:8080/project/server/rest/subjects",
data: {
"subject:title":"Test Name",
"subject:description":"Creating test subject to check POST method API",
"sub:tags": ["facebook:work", "facebook:likes"],
"sampleSize" : 10,
"values": ["science", "machine-learning"]
},
error: function(e) {
console.log(e);
}
});
"요청에서 리소스를 빌드할 수 없습니다"라고 되어 있습니다.제가 무엇을 빠뜨리고 있나요?
결국, 저는 실수를 했고, 그 이유는 제가 보내드린 JSON 데이터의 스트링을 해야 하기 때문입니다.XHR 객체에서 콘텐츠 유형과 데이터 유형을 설정해야 합니다.올바른 버전은 다음과 같습니다.
$.ajax({
type: 'POST',
url: "http://localhost:8080/project/server/rest/subjects",
data: JSON.stringify({
"subject:title":"Test Name",
"subject:description":"Creating test subject to check POST method API",
"sub:tags": ["facebook:work", "facebook:likes"],
"sampleSize" : 10,
"values": ["science", "machine-learning"]
}),
error: function(e) {
console.log(e);
},
dataType: "json",
contentType: "application/json"
});
다른 사람에게 도움이 될지도 몰라.
혹시 다른 사람이 이걸 마주칠까 봐데스크탑 브라우저에서는 정상적으로 동작하고 있는 웹 사이트가 있습니다만, 안드로이드 디바이스에서는 400 에러가 발생하고 있습니다.
그것은 위조 방지 토큰으로 판명되었다.
$.ajax({
url: "/Cart/AddProduct/",
data: {
__RequestVerificationToken: $("[name='__RequestVerificationToken']").val(),
productId: $(this).data("productcode")
},
문제는 이었습니다.네트워크 컨트롤러가 올바르게 설정되지 않았습니다.
컨트롤러에 속성을 추가해야 했습니다.
[AllowAnonymous]
[IgnoreAntiforgeryToken]
[DisableCors]
[HttpPost]
public async Task<JsonResult> AddProduct(int productId)
{
그 코드는 재검토가 필요하지만 적어도 나는 그 원인이 무엇인지 알고 있다.400 에러는 전혀 도움이 되지 않습니다.
네, 해야 돼요.stringify
그JSON
데이터 처리400 bad request
데이터를 식별할 수 없기 때문에 오류가 발생합니다.
400 Bad Request
잘못된 요청입니다.브라우저에서 이 서버가 인식할 수 없는 요청을 보냈습니다.
또한 추가가 필요합니다.content type
그리고.datatype
뿐만 아니라.그렇지 않은 경우,415
라고 하는 에러Unsupported Media Type
.
415 지원되지 않는 미디어 유형
이거 먹어봐.
var newData = {
"subject:title":"Test Name",
"subject:description":"Creating test subject to check POST method API",
"sub:tags": ["facebook:work", "facebook:likes"],
"sampleSize" : 10,
"values": ["science", "machine-learning"]
};
var dataJson = JSON.stringify(newData);
$.ajax({
type: 'POST',
url: "http://localhost:8080/project/server/rest/subjects",
data: dataJson,
error: function(e) {
console.log(e);
},
dataType: "json",
contentType: "application/json"
});
이렇게 하면 필요한 데이터를 쉽게 수정할 수 있습니다.Ajax 블록 외부에 정의되어 있기 때문에 혼동하지 않습니다.
질문이 좀 오래된데...하지만 만약 누군가가 오류 400에 직면한다면, 그것은 또한 csrf를 게시할 필요성으로부터 올 수 있습니다.투고 요구에 대한 파라미터로서의 토큰.
템플릿의 craft에서 이름과 값을 얻어야 합니다.
<script type="text/javascript">
window.csrfTokenName = "{{ craft.config.csrfTokenName|e('js') }}";
window.csrfTokenValue = "{{ craft.request.csrfToken|e('js') }}";
</script>
요청하신 대로 전달해 드리겠습니다.
data: window.csrfTokenName+"="+window.csrfTokenValue
다음 함수를 사용하여 "데이터" 개체에서 쿼리를 작성해야 합니다.
function buildQuery(obj) {
var Result= '';
if(typeof(obj)== 'object') {
jQuery.each(obj, function(key, value) {
Result+= (Result) ? '&' : '';
if(typeof(value)== 'object' && value.length) {
for(var i=0; i<value.length; i++) {
Result+= [key+'[]', encodeURIComponent(value[i])].join('=');
}
} else {
Result+= [key, encodeURIComponent(value)].join('=');
}
});
}
return Result;
}
다음으로 다음으로 넘어갑니다.
var data= {
"subject:title":"Test Name",
"subject:description":"Creating test subject to check POST method API",
"sub:tags": ["facebook:work, facebook:likes"],
"sampleSize" : 10,
"values": ["science", "machine-learning"]
}
$.ajax({
type: 'POST',
url: "http://localhost:8080/project/server/rest/subjects",
data: buildQuery(data),
error: function(e) {
console.log(e);
}
});
앞으로도 Wordpress에서 AJAX를 사용하다가 400개의 오류가 발생한 분들에게 도움이 되었으면 합니다.이 질문은 오래되었지만, 제공된 솔루션은 모두 프로그래밍 방식으로 이루어졌으며, 많은 사람들이 코드를 검토하여 정답을 반복적으로 찾았지만 효과가 없다는 것을 알게 될 것입니다.
"WP AJAX request returning 400 Bad Request" 또는 "WP AJAX request returning 0"을 해결하는 방법을 묻는 수십 개의 결과를 찾았지만 오늘은 아무 것도 작동하지 않았습니다.
"How do I fix 400 bad request on Wordpress"를 검색한 결과 https://wp-umbrella.com/troubleshooting/400-bad-request-error-on-wordpress/에서 답이 나왔습니다.
웹 브라우저 캐시 및 쿠키 지우기
놀라실 수도 있지만 WordPress의 400개 오류는 브라우저의 캐시와 쿠키를 지우는 것으로 해결할 수 있습니다.브라우저 캐시는 사용자가 방문하는 웹 사이트의 이미지, 스크립트 및 기타 부분을 일시적으로 저장하여 검색 속도를 높입니다.
캐시와 쿠키를 모두 클리어하면 400 Bad Request 코드가 사라지고 결과는 예상대로 AJAX 결과를 반환합니다.
언급URL : https://stackoverflow.com/questions/16017081/getting-400-bad-request-error-in-jquery-ajax-post
'programing' 카테고리의 다른 글
ag-grid 대 slick-grid 대 angular-grid 중 어느 것이 더 나은가? (0) | 2023.03.20 |
---|---|
TypeScript에서 여러 유형의 어레이 정의 (0) | 2023.03.20 |
워드프레스에서 wp_get_attachment_image()를 올바르게 사용하는 방법 (0) | 2023.03.15 |
업로드 중 오류가 발생했습니다.이미지를 편집기에 업로드할 때 나중에 다시 시도하십시오."라는 워드프레스를 사용합니다. (0) | 2023.03.15 |
HTTP Client를 사용하여 JSON을 Array 또는 List로 역직렬화합니다.를 사용하여 ReadAsync 를 읽습니다.NET 4.0 태스크 패턴 (0) | 2023.03.15 |