2012-07-17 59 views
0

似乎通過ColorBox(不使用iframe)加載Razor局部視圖時,JavaScript庫不能正確初始化或它是部分的artifacte。如果我將這些庫包含在父頁面中,JavaScript函數將在部分jsut內運行。當庫處於不完整狀態時,我看不到任何來自瀏覽器的錯誤,但它不起作用。如果我移動部分外的庫(在這種情況下爲fileuploader.js),並保持部分中的功能正常工作。部分通過ColorBox調用時加載JavaScript?

例子:

<script src="@Url.ContentArea("~/Scripts/plugins/ajaxUpload/fileuploader.js")" type="text/javascript"></script> 

        <div id="file-uploader"> 
         <noscript> 
          <p> 
           Please enable JavaScript to use file uploader.</p> 
         </noscript> 
        </div> 


<script> 

$(function() { 
     var fileCount = 0; 
     var uploader = new qq.FileUploader({ 
      element: document.getElementById('file-uploader'), 
      action: '/Admin/Avatar/AvatarUpload', 
      debug: true, 
      params: { 
       'userId': '@ViewBag.UserId' 
      }, 
      onSubmit: function (id, fileName) { 
       fileCount++; 
      }, 
      onComplete: function (id, fileName, responseJson) { 
       if (responseJson.success) { 
        if (createAvatar(responseJson.file, responseJson.imageId)) { 
         fileCount--; 

        } else { 
         fileCount--; 

        } 
       } else { 
        $("span.qq-upload-file:contains(" + fileName + ")").text(responseJson.errorMessage); 
        fileCount--; 
       } 

       if (fileCount == 0) { 
       ..... 
       } 

      }, 
      onCancel: function (id, fileName) { 
       fileCount--; 
       if (fileCount == 0) { 
        .... 
       } 
      } 
     }); 
    }); 

<script> 
+0

這是一個404錯誤?你真的跑進一個區域嗎?我說這是因爲'@ Url.ContentArea',如果你用'@ Url.Content'嘗試,發生了什麼? – 2013-03-07 13:34:22

回答

0

您可能要檢查是否有您所使用的JavaScript庫(一個在父母和一個在部分)的重複引用。

這是一個常見問題,它不會引發任何錯誤,但會阻止您的JavaScript代碼執行。

0

我認爲這是一個時間線問題。在「部分視圖」加載(或附加div)之前,JavaScript嘗試綁定它並失敗。因此它無法找到位於Partial View文檔中的元素。例如:當您調用GET或POST方法時,在查詢之後放置一個控制點,例如用於綁定「colorbox」:

function getMyPartial(partialname) { 
    var resultDiv = document.getElementById("content"); 
    $.ajax({ 
     type: "GET", 
     url: partialname,                     
     async: false, 
     success: function (data) { 
      resultDiv.innerHTML = ""; 
      resultDiv.innerHTML = data.toString(); 
     } 
    });  
    var indd = 0; //This is Control Point 
    if (partialname == "YourPartialName") { 
     var yourelementinpartial= document.getElementById("example"); 
     while (!yourelementinpartial) { 
      indd++; 
     } 
     $(".group4").colorbox({ rel: 'group4' }); //binding point 
    }  
} 

在控制點,如果您的PartialView文檔中的任何元素髮現它會綁定。