0

隠し変数をphpファイルに送信しようとしています。そのため、php はこれらの変数を受け取りません。以下は、これらの変数を送信することを目的としたコードです。なぜそれが機能しないのかについて何か考えはありますか? ご協力いただきありがとうございます。

   ////// For the form of training data
  // bind 'myForm1' and provide a simple callback function
       $('.myForm1').ajaxForm(options);

  // attach handler to form's submit event
       $('.myForm1').submit(function() {       // .myForm1 is a class so applies to all forms of this page

  // passing PK/FK as hidden value to php (drop down menu displays values, here I get the PK-PF via key and send them to php for upload)
  var sown=$('#selpersonO').find(":selected").attr('key');  // finds the value of key of the selected choice in the drop down menu. Key is sent back by the php code that send info to drop down menu
             //console.log(tmp);
             //console.log(this);
            $(this).append('<input/>').attr('type','hidden').attr('selpersonO',sown);  // makes key value as hidden and passed to the php form that uploads data
            //console.log( $('.myForm')) ;
  var saccess=$('#selaccess').find(":selected").attr('key');
            $(this).append('<input/>').attr('type','hidden').attr('selaccess',saccess);
  var scountry=$('#selcountry').find(":selected").attr('key');
            $(this).append('<input/>').attr('type','hidden').attr('selcountry',scountry);
  var sprod=$('#selpersonP').find(":selected").attr('key');
            $(this).append('<input/>').attr('type','hidden').attr('selpersonP',sprod);

  // submit $the form
     $(this).ajaxSubmit();
  // return false to prevent normal browser submit and page navigation
     return false;
     });
4

2 に答える 2

3

name入力の属性を指定していないため、リクエスト パラメータのセットに追加されません。次の方法で隠しパラメータを追加してみてください。

var saccess=$('#selaccess').find(":selected").attr('key');
$(this).append('<input/>')
       .attr('type','hidden')
       .attr('name', 'selaccess')
       .attr('value', saccess);
于 2013-03-29T09:28:16.197 に答える
1

あなたのコードで:

$(this).append('<input/>').attr('type','hidden').attr('selpersonO',sown);

これらは、要素ではなく、要素 (または参照するもの).attr()に対して設定されます。新しく作成して追加した要素ではなく、追加した要素を返します。form$(this)input.append()

次の表記を使用して、ノードを作成し、その属性を設定します。

$(this).append(
    $('<input>', {
         type : 'hidden',
         selpersonO : sown,
         name : 'required', // YOU NEED TO SET NAME AND VALUE
         value : 'required' // FOR PHP TO RETRIEVE THEM
    })
);

valueカスタムの名前付き属性を持つ代わりに、属性を設定します。また、本当にカスタム属性を使用する必要がある場合は使用できますが、接頭辞を付ける必要がありますdata-。次に、jQuery の .data(); でそれらにアクセスできます。

<input type="hidden" id="test" name="test" value="3" data-key="44" />

jQuery 経由で処理します。

var key = $('#test').data('key') // Get value of data-key
var key = $('#test').attr('data-key') // DON'T DO THIS. Will work, but use data()
$('#test').data('key', 'test') // Set value
var value = $('#test').val() // Gets the `value` attribute

PHP に送信されるのは、属性namevalue属性だけです。

$val = $_GET['test'] // refers to `name` attribute. gets `value` attribute
于 2013-03-29T09:28:38.460 に答える