JQuery Ajax가 POST 대신 GET을 전송합니다.
다음 코드는 POST HTTP 요청 대신 GET을 트리거합니다.
function AddToDatabase() {
this.url = './api/add';
}
AddToDatabase.prototype.postData = function(dataToPost) {
$.ajax({
type: "POST",
url: this.url,
data: dataToPost,
context: this,
success: this.onSuccess
});
};
var AddToDatabase = new AddToDatabase();
data = {data: 'coucou'};
AddToDatabase.postData(data);
POST를 받는 이유와 방법은 무엇입니까?
Google Chrome Inspect 및 Firefox Inspect에서 브라우저가 GET을 전송하는 것을 알 수 있습니다.다음은 Chrome의 것입니다.
요청 URL:http://localhost/SAMPLE-CODS/UPDATE%20MYSql/api/add/요청방법:GET 상태 코드: 200 OK
해결된
'.api/add'라는 URL은 실제로 '.api/add/index.php'에 게시하는 것이었습니다.'.api/add'를 호출한 것으로 나타났습니다./index.php
또는 .api/add/
POST 요청이 있습니다.
URL이 틀렸을 뿐인데, 어떤 이유에서인지 '.api/add/'에 대한 GET 요청이 성공했습니다.
MVC에 문제가 있습니다.어떤 이유로 [HttPost]를 삭제하면 POST를 사용하도록 ajax에게 지시하고 있습니다만, 예상대로 동작합니다.
- 알고 보니, 이 제품을
유형: "POST"
- jQuery 페이지의 예에서는 다음을 사용하도록 되어 있지만
방법 : "POST"
현재 POST의
하지만 서류를 뒤져본 결과 이걸 발견했어요.
이 문제가 있었습니다.@FANGLE의 제안에 따르면.htaccess가 후행 슬래시를 삭제하고 있기 때문에 URL을 다음과 같이 설정했습니다./ajax/foo/bar/
가 아니라/ajax/foo/bar
리다이렉트는 요구를 POST에서 GET으로 변경합니다./를 삭제하면 문제가 해결됩니다.
URL'./api/add'
실제로 로 리다이렉트 되었다'./api/add/index.php'
따라서 리다이렉트 후 새로운 요구가 송신한 이 기묘한 사이드 패킷은GET
대신POST
솔루션
- 완전한 URL을 사용
'./api/add/index.php'
- 또는 슬래시를 추가합니다.
'./api/add/'
.
사용하다 보니까dataType: 'jsonp'
요구를 로 변환합니다.GET
로 바꿨습니다.dataType: 'json'
에서 바뀌었다GET
로.POST
.
이 동작은 POST가 GET을 송신하고 있는 장소에서도 볼 수 있었습니다.시나리오가 꽤 독특하긴 하지만 누군가에게 도움이 될 수도 있어요.
이 문제는 사용자 역할 편집 페이지에서 발생하였습니다.이 페이지에서 역할이 체크 또는 오프되었을 때 즉시 액션으로 Ajax(게시물)를 사용하고 있었습니다.
또한 사용자의 역할 정보가 변경될 때마다 사용자를 재인증(및 리다이렉트)하도록 서버를 설정하여 사용자의 클레임이 갱신되도록 했습니다.
그 잔인한 순환은 다음과 같이 끝났다.
첫 번째 역할 업데이트 - POST - 200 성공
다음 역할 업데이트 - POST - 302 Found - > 방향 변경(Chrome의 네트워크 모니터가 아닌 Fiddler를 사용할 때까지 이 사실을 몰랐습니다)
(2)로부터의 리다이렉트콜(같은 URL) -- GET -- 404 Not Found (투고만 허용했기 때문에)
GOTO (1)
서버가 (Accept Types에 근거해) ajax 요구를 검출했을 때에, 재인증/청구 갱신을 바이패스 하도록 서버를 변경했습니다.
도 같은 의 ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★https://
를 참조해 주세요.
jQuery.ajax({
type: "POST",
url: "www.someurl.com",//instead of "https://www.someurl.com"
data: { foo:"bar"},
success: function(d){ console.log(d); },
dataType: "JSONP"
});
저는 당신의 코드 조각은 괜찮아 보이지만, 만약 당신이 확실히 알고 싶다면 $.ajax 대신 $.post를 사용해도 됩니다.
$.post('ajax/test.html', function(data) {
$('.result').html(data);
});
jquery link : http://api.jquery.com/jQuery.post/
저도 같은 문제가 있었는데 이 질문을 찾았는데 답이 제 문제를 해결해주지 않았어요.엔 지우는 해결해요.contentType
필드를 지정합니다.
contentType: "application/json",
.htaccess 파일을 확인하거나 요청을 리디렉션할 수 있는 다른 항목을 검색하십시오.
이 문제가 발생했는데 IIS의 URL Rewrite 모듈로 판명되었습니다.
ASP를 사용하고 있습니다.NET MVC 및 WebAPI.소셜 네트워크에서 동일한 URL을 두 개의 다른 페이지로 보지 않도록 소문자 URL을 강제로 표시하는 규칙을 만들었습니다.
예를 들어 다음과 같습니다.
"http://url.com/View/Something/123GuidIdSomething"
대
"http://url.com/view/something/123guididsomething"
하지만, 이것은 어떻게든 나의 에이잭스 요청을 망치고 있었다.규칙을 해제하고 문제가 해결되었습니다.
매우 일반적인 실수는 송신으로서 버튼 타입을 사용하고, 폼의 메서드를 변경하지 않는 것입니다(디폴트로 취득됩니다).
버튼 타입의 submit을 사용하지 않는 것을 확인해 주세요.사용할 경우 폼 방식을 posting으로 변경했습니다.
제 경우, AJAX 요청에는 문제가 없었던 것으로 판명되었습니다.
했습니다.submit
type
나나 input
이는, 로 「 」, 「 」, 「 」, 「 」, 「 」, 「」/
syslog.syslog.
나는 국, 는 the the the를 했다.type
button
그리고 그것은 성공하였다.
$.ajax({
url: "login.php",
type: "POST",
data: $("#form").serialize(),
success: (param) => {},
error: (param) => {}
})
<form id="form">
<label for="foo">Foo</label>
<input type="text" name="foo" id="foo">
<br>
<label for="password">Password</label>
<input type="password" name="password" id="password">
<br>
<input <!--type="submit"--> type="button" value="Send" id="submit">
</form>
이 문제를 발견했는데, 입력에서 추출한 URL 파라미터의 인코딩에 문제가 있는 것 같습니다.Chrome을 표시하고 POST
값이 되었습니다.GET
탁한한다
문제를 일으키는 코드는 다음과 같습니다.
$.ajax({
method: 'POST',
type: 'POST',
url: '/ajax/test.php?firstname=' + $('#fname').val()+ "&lastname=" + $('#lname').val()+ "&email=" + $('#email').val(),
success: function(msg) {
alert("Success");
},
error: function() {
alert("Failure");
}
});
은 을 시켜 '''를 하는 것이었습니다.data
을 url:: url: url: url: url: url: url: url: url: url: url: url: url: url: url: 에
$.ajax({
method: 'POST',
type: 'POST',
url: '/ajax/test.php',
data: {firstname: $('#fname').val(), lastname:
$('#lname').val(), email: $('#email').val()},
success: function(msg) {
alert("Success");
},
error: function() {
alert("Failure");
}
});
언급URL : https://stackoverflow.com/questions/12195883/jquery-ajax-is-sending-get-instead-of-post
'programing' 카테고리의 다른 글
각도 html을 렌더링하는 방법JS 템플릿 (0) | 2023.03.10 |
---|---|
객체 위에 불변js를 사용해야 하는 이유는 무엇입니까?얼려? (0) | 2023.03.10 |
Wordpress: Ajax 호출로 플러그인 함수를 호출하는 방법 (0) | 2023.03.10 |
Spring boot application.properties maving multi-module 프로젝트 (0) | 2023.03.10 |
메서드 JPQL에 대한 쿼리를 검증하지 못했습니다. (0) | 2023.03.10 |