다음 코드는 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-CODES / 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]를 제거하면 ajax에게 POST를 사용하도록 지시하더라도 예상대로 작동합니다.
- 당신이 사용해야한다는 것이 밝혀졌습니다.
유형 : “POST”
- jQuery 페이지의 예에서
방법 : “POST”
이제 POST입니다.
그러나 문서를 파헤친 후 이것을 발견했습니다.
답변
나는이 문제를 가지고 내 htaccess로는 슬래쉬를 제거했기 때문에 FAngle의 제안 @ 당이 – 그리고 내가 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/'
.
답변
내 POST가 GET을 보내는 곳에서도이 동작을 발견했습니다. 시나리오는 매우 독특하지만 누군가에게 도움이 될 수도 있습니다.
이것은 역할이 선택되거나 선택 취소되었을 때 즉각적인 조치로 ajax (게시물)를 사용했던 내 사용자 역할 편집 페이지에서 나에게 발생했습니다.
또한 역할 정보가 변경 될 때마다 사용자를 재 인증 (및 리디렉션)하도록 서버를 구성하여 클레임이 새로 고쳐졌습니다.
잔인한주기는 다음과 같이 끝났습니다.
-
첫 번째 역할 업데이트-POST-200 성공
-
다음 역할 업데이트-POST-302 Found-> Redirect (Chrome의 네트워크 모니터가 아닌 Fiddler를 사용할 때까지이 사실을 알아 차리지 못했습니다)
-
(2) (동일한 URL)에서 호출 리디렉션-GET-404 찾을 수 없음 (게시물 만 허용했기 때문에)
-
고토 (1)
Ajax 요청 (Accept Types 기반)을 감지하면 재 인증 / 클레임 업데이트를 우회하도록 서버를 변경했습니다.
답변
나는 dataType: 'jsonp'
그것을 사용할 때 요청을 GET
. 에 나는 그것을 변경 dataType: 'json'
은 변경 GET
에 POST
.
답변
비슷한 문제가 있었고 https://
내 URL 에서 하드 코드 를 제거하자마자 작동하기 시작했습니다 .
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 링크 : http://api.jquery.com/jQuery.post/