任意のアンカーに対して Ajax リクエストを行う関数があります。リクエスト メソッドは GET または POST です。この場合、フォームを使用せずに POST を作成したいのですが、Ajax リクエストはリクエストを送信する前にエラーをスローします。エラーの値は "error" で、すべてのエラー/障害の説明変数は "" です。
function loadPage(url,elem_id,method,data) {
ajaxLoading(elem_id);
$.ajax({
type: method,
url: url,
data: data,
success:function(data){
$("#"+elem_id).html(data);;
},
error:function(request,textStatus,error){
alert(error);
}
});
}
関数が呼び出されたときのパラメーターは次のとおりです (js コンソールからコピーされます)。
data: "partial=yes"
elem_id: "page"
method: "post"
url: "/projects/2/follow"
お尋ねのとおり、loadPage 関数を呼び出すコードは次のとおりです。
$("body").on("click","a.ajax",function(event) {
var _elem = getDataElem($(this));
var _method = getRequestMethod($(this));
var _partial = getRequestPartial($(this));
handlers.do_request(event,$(this).attr("href"),_elem, _method, _partial);
});
var handlers = (function() {
var obj = {};
obj.do_request = function(event,url,elem_id,method,data) {
event.preventDefault();
loadPage(url,elem_id,method,data);
history.pushState({selector:elem_id,method:method,data:data},null,url);
};
}());
Ajax リクエストが失敗した後、デフォルトでリクエストが行われ、成功を返します。私が読んだ限りでは、これは POST リクエスト (フォームを必要としない) を作成する有効な方法のようです。
関数で何か間違ったことをしていますか?エラー情報が空なのはなぜですか?
ありがとう
編集:
私は、変数「データ」がシリアル化関数で作成されたときに、その関数が機能する「フォーム」からの POST について考えてきました (たとえば、「var data = $(this).serialize();」)。「フォーム」なしで POST を作成したときの「データ」の形式が何らかの形で間違っている可能性がありますか? おそらく、JQuery Ajax 関数は、POST が行われたときに、"partial=yes" のような単純な文字列をデータとして受け入れません。これについて何か考えはありますか?