94

次のコードは、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 リクエストが成功していました。

4

13 に答える 13

107

MVC に問題があります。何らかの理由で [HttPost] を削除すると、 ajax に POST を使用するように指示しているにもかかわらず、期待どおりに動作します。

  • 使用する必要があることがわかりました

タイプ: 「ポスト」

  • jQueryページの例では使用するように言われていますが

メソッド:「POST」

これで POST の

しかし、ドキュメントを掘り下げた後、これを見つけました。

ここに画像の説明を入力

于 2015-03-13T14:06:15.373 に答える
35

私はこの問題を抱えていました.@FAngleの提案によると、.htaccessが末尾のスラッシュを削除していたため、URLを/ajax/foo/bar/and notに設定してい/ajax/foo/barました。リダイレクトは、リクエストを POST から GET に変更します。/ を削除すると、問題は解決しました!

于 2016-05-05T07:09:07.977 に答える
11

URL'./api/add'は実際に にリダイレクトされました'./api/add/index.php'GETしたがって、リダイレクト後の新しいリクエストが代わりに使用して送信したこの奇妙な副作用POST

解決

  • 完全な URL を使用する'./api/add/index.php'
  • またはスラッシュを追加し'./api/add/'ます。
于 2016-10-17T11:19:23.087 に答える
3

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"
});
于 2016-05-03T20:31:38.377 に答える
2

私にとっては、コードは問題ないように見えますが、念のために $.ajax の代わりに $.post を使用できます

$.post('ajax/test.html', function(data) {
 $('.result').html(data);
});

jquery リンク: http://api.jquery.com/jQuery.post/

于 2012-08-30T11:33:54.613 に答える
1

.htaccess ファイルを確認するか、リクエストをリダイレクトする可能性のある他のものを検索してください

于 2012-08-30T11:57:35.630 に答える
1

非常によくある間違いは、ボタンの種類を送信として使用し、フォームのメソッド (デフォルトでは取得) を変更していないことです。

ボタンタイプの送信を使用していないことを確認してください。使用する場合は、フォームメソッドを投稿に変更しました

于 2019-12-03T15:07:36.817 に答える