2011-10-29 3 views
0

私はフォームを使ってAjax経由で画像をアップロードできるようにするためにJqueryを使用しています。アップロードされた各画像にウォーターマークを追加する機能を追加しました(これはupload_image.phpで行います)。この部分はうまく動作します。Jquery val()は、選択されている最初の選択値を常に取得します。

ユーザーは、フォームセレクトを使用して、画像に透かしを配置する場所を選択できます。私はJQueryの.val()を使用してid = "透かし"の値を取得し、それをupload_image.phpに渡すクエリ文字列値として追加します。

問題は、実際にフォームで選択したものに関係なく常に最初の選択値を渡すことです。私はそれを関数に入れようとしました(ページの読み込み時に値を取得していたと思います)。選択をラジオボタンに変更しました。それはまだページ上の最初のラジオボタンの値を取得します。あなたが選んだものであっても。ここ

は、これを処理するスクリプトの一部である:

<script type="text/javascript" > 
$(function(){ 

    // build URL to php upload script with watermark placement 
    function setWatermark() { 
     var uploadUrl = 'http://www.mysite.com/upload_image.php?w='; 
     var watermarkValue = $('#watermark').val(); 
     var watermarkUrl = uploadUrl + watermarkValue; 
     return watermarkUrl; 
    } 

    var btnUpload=$('#upload'); 
    new AjaxUpload(btnUpload, { 
     action: setWatermark(), 
     name: 'uploadfile', 
    }); 

}); 
</script> 

これは、(取り除か無関係なフィールドを持つ)フォームである:

<form id="image_form" action="this_form.php" method="post" enctype="multipart/form-data"> 
    <select id="watermark"> 
     <option value="top_left">Top Left</option> 
     <option value="top_right">Top Right</option> 
     <option value="center">Center</option> 
     <option value="bottom_left">Bottom Left</option> 
     <option value="bottom_right">Bottom Right</option> 
    </select> 
    <div id="upload" ><span><img src="upload_button.jpg" /></span></div> 
</form> 

答えて

5

このコードを実行する:

new AjaxUpload(btnUpload, { 
    action: setWatermark(), 
    name: 'uploadfile', 
}); 

ブラウザは、コンストラクタに渡す引数を最初に構築する必要があります。オブジェクトの2番目の引数を作成するには、actionプロパティの値を取得するためにsetWatermarkを呼び出す必要があります。これがあなたの問題です。 AjaxUploadオブジェクトが作成されたときにsetWatermarkが呼び出されています。

私はAjaxUploadが何であるかわかりませんが、オプションの定数として提供されるのではなく、actionが必要なときに関数を呼び出す方法を見つける必要があります。

関連する問題