Jqueryajaxがphpエコー結果を表示しない
データを投稿した後、ajaxにphpファイルからのエコーを表示させたい。私はデータベースにデータを投稿しています。投稿が成功したら、「完了」をエコーしたいと思います。投稿から取得した結果を使用して、処理されたphpファイルから取得したメッセージを判別します。送信を押した時点ではデータが挿入されますが、ajaxスクリプトのデータが「完了」を反映しているかどうかを確認するアラートを追加すると、代わりに、作成したテーブルのhtmlコードと「完了」という単語が表示されます。ボトム。 Completeを「ステータスパラメータ」に入れたいと思います。
Ajaxスクリプト
$.ajax({
type: "POST",
data: $('#frm').serialize(),
url: "create_submitted.php?",
cache:false,
success: function (status) {
alert(status);
location.reload();
}
});
PHPスクリプト
session_start();
require_once("database.php");
require_once("class.php");
$reg = new SUBMITTED();
$reg->month = $_POST["month_s"];
$reg->year = rtrim($_POST["year_s"]);
$reg->month_year = $reg->year."-".date('m',strtotime($_POST["month_s"]))."-00";
$reg->user_fk = $_SESSION['franchise_code'];
$reg->create();
echo json_encode("Complete");
答え :
解決策:
jQueryが、デフォルトで「text/plain」または「text/html」である別のコンテンツタイプヘッダーを持つ応答を無視しないようにします。 次のコマンドでHTMLを更新できます:
またはjQueryなし:
また、phpスクリプトで検証を行うことを強くお勧めします。そうしないと、誰かが厄介な 更新:
ページに何かを印刷する前に、phpでヘッダーを設定する必要があることを忘れてしまいました。
また、成功のコールバックを 場所:
現在、受け入れているパラメータは1つだけですが、何がうまくいかないかを把握できるように、3つすべてを お役に立てば幸いです:) location.reload を削除します。代わりに、必要なhtmlの一部(divや{- code-9}になります)。
コメントに記載されているように、jsの
datatype:json を削除する必要はありませんが、jsonが返されることを期待している場合は、phpで対応するヘッダーを次のように設定する必要があります。 :
header("Content-Type: application/json");
$("#targetElement").html("my html code");
document.querySelector("#targetElement").innerHtml("my html code");
<script>
タグを{-codeに挿入した場合にXSS攻撃に備えることになります。 -9}送信済み(受信した入力を htmlentities(__input_goes_here__)
Type: Function( Anything data, String textStatus, jqXHR jqXHR )
data は、サーバーから返されるdataです
textStatus は、サーバーから返されるステータス情報(404、200など)です
jqXHR は、呼び出しを行ったjqueryオブジェクトです。
console.log
することをお勧めします。
答え :
解決策:
これを試してください:
$.ajax({
type: "POST",
data: $('#frm').serialize(),
url: "create_submitted.php?",
cache:false,
success: function (status) {
alert(status);
}});
location.reload(); が原因で、スクリプトが成功するたびにページをリロードしていました
また、 datatype: 'json',
は必要ありません。
同様の質問
私たちのウェブサイトで同様の質問で答えを見つけてください。