2010-12-08 9 views
2

とフォームから渡す変数私はこの質問にsimpledemoにhttp://demo.swfupload.org/v220/simpledemo/index.phpSWFUploadの - アップロード

を参照のうえ午前私は、ドロップダウンメニューで設定されている変数を渡すことができるようにしたいです。

アップローダーは

var swfu; 
window.onload = function() { 
    var settings = { 
     flash_url : "<?php global_data::show_admin_dir(); ?>SWFUpload v2.2.0.1 Samples/demos/swfupload/swfupload.swf", 
     upload_url: "<?php global_data::show_admin_dir(); ?>upload.php", 
     post_params: {"PHPSESSID" : "<?php echo session_id(); ?>" }, 
     file_size_limit : "100 MB", 
     file_types : "*.*", 
     file_types_description : "All Files", 
     file_upload_limit : 100, 
     file_queue_limit : 0, 
     custom_settings : { 
      progressTarget : "fsUploadProgress", 
      cancelButtonId : "btnCancel" 
     }, 
     debug: false, 
       // Button settings 
     button_image_url: "images/TestImageNoText_65x29.png", 
     button_width: "95", 
     button_height: "29", 
     button_placeholder_id: "spanButtonPlaceHolder", 
     button_text: '<span class="theFont">UPLOAD</span>', 
     button_text_style: ".theFont { font-size: 16; }", 
     button_text_left_padding: 12, 
     button_text_top_padding: 3, 

     // The event handler functions are defined in handlers.js 
     file_queued_handler : fileQueued, 
     file_queue_error_handler : fileQueueError, 
     file_dialog_complete_handler : fileDialogComplete, 
     upload_start_handler : uploadStart, 
     upload_progress_handler : uploadProgress, 
     upload_error_handler : uploadError, 
     upload_success_handler : uploadSuccess, 
     upload_complete_handler : uploadComplete, 
     queue_complete_handler : queueComplete // Queue plugin event 
    }; 

    swfu = new SWFUpload(settings); 
}; 

によって開始され、誰もが、それははるかに高く評価されるだろう正しい方向に私を指すことができれば

<form id="form1" action="index.php" method="post" enctype="multipart/form-data"> 
     <p><label>Category: </label><input type="radio" name="for" class="radio" value="category" checked="checked" /><select name="foo"><option>...</option><?php global_data::show_breadcrum_list('option', "/"); ?></select></p> 
     <p><label>Product: </label><input type="radio" name="for" class="radio" value="category" /><select disabled="disabled"><option name="foo">...</option><?php global_data::show_breadcrum_list('option', "/"); ?></select></p>  
     <div class="fieldset flash" id="fsUploadProgress"> 
      <span class="legend">Upload Queue</span> 
     </div> 
     <div id="divStatus">0 Files Uploaded</div> 
     <div> 
      <span id="spanButtonPlaceHolder"></span> 
      <input id="btnCancel" type="button" value="Cancel All Uploads" onclick="swfu.cancelQueue();" disabled="disabled" style="margin-left: 2px; font-size: 8pt; height: 29px;" /> 
     </div> 
    </form> 

を次のようにフォームがあります。

私は方法を発見したことがありEDITの#####

###### ...

初期化設定でpost_params: {"PHPSESSID" : "<?php echo session_id(); ?>", "PR" : thing }, を使用し、関数内でそのすべてを包む

function loader(thing) { 
    .... 
} 

その後、私はそれがエラーとだけ銭を取得しますアップロードする前に、選択オプションをもう一度変更した場合、それは動作します

$(document).ready(function(){ 
    $('select[name=foo]').change(function(){ 
     loader($(':selected', this).text()); 
    }); 
}); 

を使用しますが、 Dの代わりに二...

答えて

0

の最初の選択肢は、########

####### EDITは右、これは魅力を作品。フォームで

$(function() { 
    function loader(thing) { 
     var settings = { 
      flash_url : admin_dir + "SWFUpload v2.2.0.1 Samples/demos/swfupload/swfupload.swf", 
      upload_url: web_root + "pm_admin/upload_image", 
      post_params: { "aj" : "true", "PR" : thing }, 
      file_size_limit : "100 MB", 
      file_types : "*.*", 
      file_types_description : "All Files", 
      file_upload_limit : 100, 
      file_queue_limit : 0, 
      custom_settings : { 
       progressTarget : "fsUploadProgress", 
       cancelButtonId : "btnCancel" 
      }, 
      debug: false, 

      // Button settings 
      button_image_url: "images/TestImageNoText_65x29.png", 
      button_width: "95", 
      button_height: "29", 
      button_placeholder_id: "spanButtonPlaceHolder", 
      button_text: '<span class="theFont">UPLOAD</span>', 
      button_text_style: ".theFont { font-size: 16; }", 
      button_text_left_padding: 12, 
      button_text_top_padding: 3, 

      // The event handler functions are defined in handlers.js 
      file_queued_handler : fileQueued, 
      file_queue_error_handler : fileQueueError, 
      file_dialog_complete_handler : fileDialogComplete, 
      upload_start_handler : uploadStart, 
      upload_progress_handler : uploadProgress, 
      upload_error_handler : uploadError, 
      upload_success_handler : uploadSuccess, 
      upload_complete_handler : uploadComplete, 
      queue_complete_handler : queueComplete // Queue plugin event 
     }; 

     swfu = new SWFUpload(settings); 
    }; 
    function pre_load(){ 
     var data = ''; 
     data += '<div class="fieldset flash" id="fsUploadProgress">'; 
     data += ' <span class="legend">Upload Queue</span>'; 
     data += '</div>'; 
     data += '<div id="divStatus">0 Files Uploaded</div>'; 
     data += '<div>'; 
     data += ' <span id="spanButtonPlaceHolder"></span>'; 
     data += ' <input id="btnCancel" type="button" value="Cancel All Uploads" onclick="swfu.cancelQueue();" disabled="disabled" style="margin-left: 2px; font-size: 8pt; height: 29px;" />'; 
     data += '</div>'; 
     return data; 
    } 
    /* args stores the input/select/textarea/radio's name and then it's value and then passes a single serialised string when uploading */ 
    /* then use a trigger to update the array, off focus, change, keyup... along thos lines on a class set for all inputs, selects and so on... works a treat */ 
    var args = {}; 
    $('.radio').click(function(){ 
     var ob = $(this).siblings('select'); 
     $('#uploader-wrapper').html(pre_load()); 
     $('.radio').siblings('select').attr('disabled', 'disabled'); 
     ob.removeAttr('disabled'); 
     args[$(this).attr('name')] = $(this).val(); 
     args[ob.attr('name')] = $(':selected', ob).text(); 
     loader($.param(args)); 
    }) 
    $('select[name=foo]').change(function(){ 
     var ob = $(this); 
     $('#uploader-wrapper').html(pre_load()); 
     args[ob.attr('name')] = $(':selected', ob).text(); 
     loader($.param(args)); 
    }); 
}); 

:クッキーとMySQL:

<form id="form1" action="index.php" method="post" enctype="multipart/form-data"> 
     <p><label>Category: </label><input type="radio" name="for" class="radio" value="category" checked="checked" /><select name="foo"><option>...</option><?php global_data::show_breadcrum_list('option', "/"); ?></select></p> 
     <p><label>Product: </label><input type="radio" name="for" class="radio" value="category" /><select disabled="disabled"><option name="foo">...</option><?php global_data::show_breadcrum_list('option', "/"); ?></select></p>  
     <div id="uploader-wrapper"> 
      <div class="fieldset flash" id="fsUploadProgress"> 
       <span class="legend">Upload Queue</span> 
      </div> 
      <div id="divStatus">0 Files Uploaded</div> 
      <div> 
       <span id="spanButtonPlaceHolder"></span> 
       <input id="btnCancel" type="button" value="Cancel All Uploads" onclick="swfu.cancelQueue();" disabled="disabled" style="margin-left: 2px; font-size: 8pt; height: 29px;" /> 
      </div> 
     </div> 
    </form> 
+0

だから、その選択を変更するたびにswfuploaderを元に戻していますか? – Chris

0

私は、2つの方法(両方のjQueryを使用して)でこの問題を解決しました。あなたがドロップダウンを変更するとき、あなたは今、クッキーを持っているような概念は

$('select[name=foo]').change(function(){ 
    $.cookie('dropdown', $(this).val()); 
}); 

だろう。 upload.phpであなたはそのクッキーを呼び出し、あなたの変数として使用することができます。

他のオプションは

$('select[name=foo]').change(function(){ 
    $.post('updatedatabase.php', {'dropdown': $(this).val()}); 
}); 

だっ次に、あなたのドロップダウンリストの最後の値を取得するにはupload.phpからデータベースを呼び出すと思います。いずれの方法も非常にエレガントですが、私は前にそれらを働かせています。誰かがより洗練されたソリューションを投稿したら、私は大好きです。

+0

私も。まだ良い解決策に取り組んでいる場合 –

+0

私はあなたが1つを得るかどうか教えてください。私はいくつかの場所でこのswfuploaderを使用し、私はこれを行う必要はありません。私はむしろ、その場で変数を渡すことは多分だろう。 – Chris

1

私は同様のことをやろうとしていましたが、このソリューションを見つけて同僚と話し合った後、swfuploadで利用可能なJavascript APIを使用して別の方法で解決しました。

私たちは、ビデオのアップロードとともに品質設定を渡そうとしていました。最終的にこの問題の解決策には、post_paramsの変更方法が含まれます。 post_paramsを開始するには、ドロップダウンのデフォルト値になります。

var selected_quality = $('select#quality-".$dirId." option:selected').val(); 
... 
post_params: {'quality' : selected_quality}, 

その後、あなたはオプションは、あなたのドロップダウンリストで選択された場合、これを更新する(swfupload.jsにあります)addPostParamメソッドを使用することができます。

$('select#quality-".$dirId."').change(function() { 
    swfu.addPostParam('quality' , this.value); 
}); 
関連する問題