私はシンプルな1つのテキスト入力フォームを持っています。送信すると、phpファイルを取得し(入力をファイルに渡す)、結果(テキストの行)を取得してdiv
に配置し、 div
をフェードインします。
ここに私が持っているものがあります:
<form id=create method=POST action=create.php>
<input type=text name=url>
<input type="submit" value="Create" />
<div id=created></div>
必要なのは、div
と呼ばれるcreated
に動的にロードされるcreate.php?url=INPUT
の結果です。
Jqueryフォームスクリプトはありますが、正しく機能させることができませんでした。ただし、ライブラリ(ファイル)はロードされています。
このコードはそれを行う必要があります。これほど簡単なものには、フォームプラグインは必要ありません。
$('#create').submit(function() { // catch the form's submit event
$.ajax({ // create an AJAX call...
data: $(this).serialize(), // get the form data
type: $(this).attr('method'), // GET or POST
url: $(this).attr('action'), // the file to call
success: function(response) { // on success..
$('#created').html(response); // update the DIV
}
});
return false; // cancel original event to prevent form submitting
});
これはファイルのアップロードにも機能します
$(document).on("submit", "form", function(event)
{
event.preventDefault();
var url=$(this).attr("action");
$.ajax({
url: url,
type: 'POST',
dataType: "JSON",
data: new FormData(this),
processData: false,
contentType: false,
success: function (data, status)
{
$('#created').html(data); //content loads here
},
error: function (xhr, desc, err)
{
console.log("error");
}
});
});
ページを更新したくない場合は、AJAXを使用してフォームを投稿する必要があります。
$('#create').submit(function () {
$.post('create.php', $('#create').serialize(), function (data, textStatus) {
$('#created').append(data);
});
return false;
});