ホームページ > バックエンド開発 > PHPチュートリアル > PHP は ajax データを使用して投稿を送信し、投稿の一般的な方法の概要、ajaxpost_PHP チュートリアル

PHP は ajax データを使用して投稿を送信し、投稿の一般的な方法の概要、ajaxpost_PHP チュートリアル

WBOY
リリース: 2016-07-13 10:14:25
オリジナル
842 人が閲覧しました

phpは投稿を送信するためにajaxデータを使用し、投稿の一般的なメソッドajaxpostの概要を説明します

この記事の例では、PHP を使用して投稿を送信する一般的な方法と、Ajax データを使用した投稿を説明します。参考のためにみんなで共有してください。具体的な方法は以下の通りです

多くの場合、ajax を使用すると問題はありませんが、不完全な ajax データ送信ポストの問題が発生することがあります。これは、誰もが分析できる例です。

以下は標準的な ajax リクエストコードです。通常は問題ありませんが、たとえば username=fdas&321 の場合や、N 以降のパラメータ値に & 記号が含まれる場合には問題が発生する可能性があります。何度かテストしてみると、データは送信できましたが、印刷されたデータは半分にカットされていました。最終的にヘッダー情報を注意深く観察したところ、問題は js にあることがわかりました。文字列のスプライシング方法によりこの問題が発生します。 username=fdas&321&password =password が間違っています。したがって、問題を回避するには、送信されるデータを {username:username,passsword:password} の json 形式に変更する必要があります。

サンプルコードは次のとおりです:

コードをコピーします コードは次のとおりです:
$(".submit").bind('click',function(){
var username = $("input[name='username']").val();
$.ajax({
URL:「投稿」,
タイプ:「投稿」、
データ型:"json",
データ:"ユーザー名="+ユーザー名+"&パスワード="+パスワード,
タイムアウト:5000、
エラー:関数(){
アラート(1)
}、
成功:function(){
}
})
})

補足: POST 経由でデータを送信する 4 つの一般的な方法

① application/x-www-form-urlencoded

これは、POST 経由でデータを送信する最も一般的な方法です。ブラウザーのネイティブ フォームの場合、enctype 属性が設定されていない場合、データは最終的に application/x-www-form-urlencoded モードで送信されます。リクエストは次のようなものです (この記事では無関係なリクエスト ヘッダーは省略しています):

コードをコピーします コードは次のとおりです:
POST http://www.bkjia.com HTTP/1.1
Content-Type: application/x-www-form-urlencoded;charset=utf-8

title=テスト&sub%5B%5D=1&sub%5B%5D=2&sub%5B%5D=3

まず、Content-Type が application/x-www-form-urlencoded として指定され、次に送信されたデータが key1=val1&key2=val2 の方法でエンコードされ、key と val の両方が URL トランスコードされます。ほとんどのサーバーサイド言語は、このメソッドを適切にサポートしています。たとえば、PHP では、$_POST['title'] はタイトルの値を取得でき、$_POST['sub'] はサブ配列を取得できます。

Ajax を使用してデータを送信するときも、この方法を使用することがよくあります。たとえば、JQuery や QWrap の Ajax では、Content-Type のデフォルト値は「application/x-www-form-urlencoded;charset=utf-8」です。

② multipart/form-data

これは、POST データを送信するもう 1 つの一般的な方法です。フォームを使用してファイルをアップロードする場合、フォームの enctyped はこの値と等しくなければなりません。リクエストの例を直接見てみましょう:

コードをコピーします コードは次のとおりです:
POST http://www.bkjia.com HTTP/1.1
Content-Type:multipart/form-data; 境界=---WebKitFormBoundaryrGKCBY7qhFd3TrwA

------WebKitFormBoundaryrGKCBY7qhFd3TrwA
コンテンツの配置: フォームデータ名 = "テキスト"

タイトル
------WebKitFormBoundaryrGKCBY7qhFd3TrwA
コンテンツの配置: フォームデータ = ファイル名 = "chrome.png"; コンテンツタイプ: 画像/png

PNG ...chrome.png の内容 ...
------WebKitFormBoundaryrGKCBY7qhFd3TrwA--

この例はもう少し複雑です。まず、テキストの内容との重複を避けるために、異なるフィールドを区切るために境界が生成されます。境界は非常に長く複雑です。次に、Content-Type は、データが mutipart/form-data でエンコードされていることと、このリクエストの境界コンテンツが何であるかを指定します。メッセージ本文は、フィールドの数に応じて同様の構造を持つ複数の部分に分割されます。各部分は --boundary で始まり、その後に内容の説明情報、改行、最後にフィールドの特定の内容 (テキストまたはバイナリ) が続きます。 。ファイルを転送する場合は、ファイル名とファイル タイプの情報も含める必要があります。メッセージ本文は --boundary-- フラグで終わります。 mutipart/form-data の詳細な定義については、rfc1867 を参照してください。

この方法は一般にファイルをアップロードするために使用され、主要なサーバー言語でもこの方法が適切にサポートされています。
上記の POST データの 2 つのメソッドはブラウザーでネイティブにサポートされており、現段階ではネイティブ フォームはこれら 2 つのメソッドのみをサポートしています。しかし、ますます多くの Web サイト、特に WebApp がデータのやり取りに Ajax を使用するようになっているため、新しいデータ送信メソッドを完全に定義して開発の利便性を高めることができます。

③ アプリケーション/json

application/json この Content-Type は、応答ヘッダーとして誰もがよく知っています。実際、現在では、メッセージ本文がシリアル化された JSON 文字列であることをサーバーに伝えるリクエスト ヘッダーとして使用する人が増えています。 JSON 仕様の普及により、IE の下位バージョンを除くすべての主要なブラウザは、JSON.stringify をネイティブでサポートしているため、JSON を処理する機能も備えています。そのため、JSON を使用する際に問題は発生しません。

JSON 形式は、キーと値のペアよりもはるかに複雑な構造化データをサポートしていることも便利です。数年前にプロジェクトに取り組んでいたとき、提出する必要のあるデータは非常に深いレベルにあり、データを JSON にシリアル化して提出したことを思い出します。ただし、その時は JSON 文字列を val として使用し、それをキーと値のペアに配置し、x-www-form-urlencoded モードで送信しました。

Google の AngularJS の Ajax 関数は、デフォルトで JSON 文字列を送信します。たとえば、次のコード:

コードをコピーします コードは次のとおりです:
var data = {'title':'test', 'sub' : [1,2,3]};
$http.post(url, data).success(function(result) {
...
});

送信される最終リクエストは次のとおりです:
コードをコピーします コードは次のとおりです:
POST http://www.bkjia.com HTTP/1.1
Content-Type: application/json;charset=utf-8

{"タイトル":"テスト","サブ":[1,2,3]}

このソリューションは、複雑な構造化データを簡単に送信でき、特に RESTful インターフェイスに適しています。 Chrome 独自の開発者ツール、Firebug、Fiddler などの主要なパケット キャプチャ ツールは、JSON データをツリー構造で表示するため、非常に使いやすいです。ただし、一部のサーバー側言語はまだこのメソッドをサポートしていません。たとえば、php は $_POST オブジェクトを通じて上記のリクエストからコンテンツを取得できません。このとき、リクエストヘッダーの Content-Type が application/json の場合、php://input から元の入力ストリームを取得し、json_decode してオブジェクトに変換する必要があります。一部の PHP フレームワークはすでにこれを開始しています。

もちろん、データを送信するために x-www-form-urlencoded を使用するように AngularJS を構成することもできます。

④ text/xml

XML-RPC (XML リモート プロシージャ コール) については前に説明しました。トランスポートプロトコルとしてHTTP、エンコード方式としてXMLを使用するリモート呼び出し仕様です。典型的な XML-RPC リクエストは次のようになります:

コードをコピーします コードは次のとおりです:
POST http://www.bkjia.com HTTP/1.1
コンテンツタイプ: text/xml


<メソッドコール>
<メソッド名>examples.getStateName


41値>



XML-RPC プロトコルはシンプルで機能的で、さまざまな言語で利用できます。 WordPress の XML-RPC API、seo/seo.html" target="_blank">検索エンジンの ping サービスなどでも広く使用されています。JavaScript では、このデータ処理をサポートする既製のライブラリもあります。インタラクションは既存の XML-RPC サービスを十分にサポートできますが、個人的には XML 構造はまだ肥大化していると感じており、一般的なシナリオでは JSON の方が柔軟で便利です。 この記事で説明した内容が皆様の PHP プログラミング設計に役立つことを願っています。

http://www.bkjia.com/PHPjc/909351.htmlwww.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/909351.html技術記事 Ajax データを使用して PHP で POST および POST を送信する一般的な方法のまとめ、ajaxpost この記事では、Ajax データを使用して PHP で POST および POST を送信する一般的な方法について説明します。参考のためにみんなで共有してください。具体的な方法は…
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート