2010-12-01 4 views
0

Я хочу загрузить несколько файлов с заголовком и ссылкой. я получаю следующее сообщение об ошибкеjquery uploadify

недействительно свойство ID

$('#divUpload').uploadifySettings('scriptData',{,'txttitle1':'Title1','tbxLink1':'Link1','1':'image1.PNG'},'1'); 

Моего код выглядит так:

<script type="text/javascript" language="javascript">  
      var divMsg ='<%= divMsg.ClientID %>'; 
      var errcnt=0; 
     $(document).ready(function() { 
     $('#divUpload').uploadify({ 
     'uploader': WebSiteUrl + 'admin/fileupload/uploadify.swf', 
     'script': WebSiteUrl + 'admin/banner-image-upload.aspx?type=fileupload', 
     'multi' : 'true', 
     'method' : 'POST', 
     'cancelImg' : WebSiteUrl + 'admin/images/cancel.png', 
     'folder': '../source/BannerImage', 
     'queueSizeLimit' : '20', 
     'fileDesc' : '*.JPEG;*.JPG;*.GIF;*.PNG;*.BMP', 
     'fileExt': '*.JPEG;*.JPG;*.GIF;*.PNG;*.BMP', 
     'wmode' : 'transparent', 
     'onCancel':function(event,queueID,fileObj,data){if(data['fileCount']==0){txtboxIndex=0;$('#btnUploadfile').hide();}else{txtboxIndex=txtboxIndex-1;}}, 
     'onAllComplete': function(event,data) 
     { 
      if(errcnt==0) 
      {   
       window.opener.location.href =WebSiteUrl + 'admin/home-banner-list.aspx?mode=uploadsucc'; 
       window.close(); 
      } 

     }, 
     'onSelect' : function(event,queueid,fileObj){$('#btnUploadfile').show();}, 
     'onComplete': function(event,queueID,fileObj,response,data){if(response=='maxupload')errcnt++;}}) 
     }); 
     function UploadFiles() 
     {   
      var cnt=''; 
      var str=''; 
      var strLink=''; 

      $('.txttitle').each(function(index){       
       if(jQuery.trim($(this).val())=='') 
       { 
        if(cnt.length ==0) 
         cnt=(index + 1); 
        else 
         cnt=cnt + ',' +(index + 1); 
       } 
      }); 
      if(cnt.length!=0) 
      {  
       alert('Please insert title in photo#' + cnt); 
       return false; 
      } 
      $('.txttitle').each(function(index){ 
       cnt= $(this).attr('name').replace('txttitle',''); 
       str =str + ',\'' + $(this).attr('name') + '\':\'' + $(this).val() + '\''; 
       str =str + ',\'' + $('.tbxLink').attr('name') + '\':\'' + $('.tbxLink').val() + '\''; 
       str= str + ',\'' + cnt + '\':\'' + $('#hdnfile'+ cnt).val() + '\''; 
      });    
      str='{' + str + '}'; 
      alert(str);   

      eval('$(\'#divUpload\').uploadifySettings(\'scriptData\',' + str +');');       
      $('#divUpload').uploadifyUpload(); 
     } 
    </script> 
+2

ewww ... отформатируйте свой код с помощью кнопок обратной связи или кнопки кода – 2010-12-01 05:41:29

ответ

1

Вы недопустимый код, например:

$('#divUpload').uploadifySettings('scriptData',{,'txttitle1':'Title1','tbxLink1':'Link1','1':'image1.PNG'},'1'); 
               ^invalid comma 

Но ... лучше вообще не использовать eval(), вы можете построить свой объект данных с помощью bracket notation, как это:

var data = {}; 
$('.txttitle').each(function() { 
    data[this.name] = this.value; 
    data[$('.tbxLink').attr('name')] = $('.tbxLink').val(); 
    data[cnt] = $('#hdnfile'+ this.name.replace('txttitle','')).val(); 
}); 
$('#divUpload').uploadifySettings('scriptData',data); 

Конечно это буквальным перевод того, что вы пытаетесь сделать ... это еще не является оптимальным, особенно $('.tbxLink').attr('name') линии, так как вы, вероятно, желая .tbxLink что относится к этому.txttitle Элемент, на котором вы находитесь, но не видя разметки, я не могу точно сказать, как это будет выглядеть.

Смежные вопросы