私は一日中この問題で頭を悩ませています。私は JavaScript について十分な知識がなく、DOM 操作のために jQuery を使い始めました。いくつかの基本的なものを構築するのは簡単です。私が望んでいたのは、この関数に渡す入力パラメーターに基づいてデータベースから引き出されるリストをフォームに入力するカスタム関数を作成することです。
コードは次のようになります。
(function($) {
$.fn.multiSelect = function(a,b,c) {
var someVar1 = parseInt(a,10);
var someVar2 = parseInt(b,10);
var someVar3 = c;
var dataString = "a=" + someVar1 + "&b=" + someVar2 + "&c=" + someVar3;
$.ajax({
type: "POST",
url: "test_ajax.php",
data: dataString,
dataType: 'json',
success: function(data) {
var a1 = data['a'];
var b1 = data['b'];
var c1 = data['c'];
return $(this).html('<p>' + a1 + b1 + c1 + '</p>');
}
});
return $(this).html('<p>' + someVar1 + someVar2 + someVar3 + '</p>');
}
};
}) (jQuery);
また、test_ajax.php 内の PHP コードは次のとおりです。
<?php
if(isset($_POST['a']) AND !empty($_POST['a'])) {
$_something = array(
'a'=> $_POST['a'],
'b'=> $_POST['b'],
'c'=> $_POST['b']
);
echo json_encode($_something);
}
?>
jQuery 関数を次のように使用すると、次のようになります。
$('#someDiv').multiSelect(1,1,'user');
$.(ajax) 側の関数は何も返さず、その外側 (関数に渡されるものを確認するために作成したもの) は「11user」を返します。
上記のコードを次のように使用すると:
$(function() {
var dataString = 'a=' + 1 + '&b=' + 1 + '&c=user';
$.ajax({
type: "POST",
url: "test_ajax.php",
data: dataString,
dataType: 'json',
success: function(data) {
var a1 = data['a'];
var b1 = data['b'];
var c1 = data['c'];
$('#someDiv').html('<p>' + a1 + b1 + c1 + '</p>');
}
});
});
test_ajax.php スクリプトからデータをフェッチします。これはすべて、問題をトラブルシューティングするためだけに簡単です。次に、データベースでの仕事を行う複雑な PHP スクリプトを作成します。
私は、変数 (ローカル/グローバル) または不適切な jQuery 関数チェーンで何か間違ったことをしていると推測しています。
編集:この操作をさまざまなメニューで何度も繰り返すため、関数はより多くのロジックを作成し、コード全体を何度も繰り返します。
どんな助けでも大歓迎です。