1. ajax上傳文件提交時,enctype=multipart/form-data怎麼帶過去
目前的情況下,沒有直接ajax提交file的可能
有一些js庫你可以使用,他們做的方法往往是在頁面新建一個iframe,然後在frame裡面建一個file的input組件,然後在那個frame裡面走submit
這樣就做成了非同步的樣子,submit那個的form你就可以設置enctype了
2. ajaxFileUpload 怎麼傳相關參數到後台
先簡介一下ajaxFileUpload參數:
options參數說明:
1、url 上傳處理程序地址。
2,fileElementId 需要上傳的文件域的ID,即<input type="file">的ID。
3,secureuri 是否啟用安全提交,默認為false。
4,dataType 伺服器返回的數據類型。可以為xml,script,json,html。如果不填寫,jQuery會自動判斷。
5,success提交成功後自動執行的處理函數,參數data就是伺服器返回的數據。
6,error 提交失敗自動執行的處理函數。
7,data 自定義參數。這個東西比較有用,當有數據是與上傳的圖片相關的時候,這個東西就要用到了。
8, type 當要提交自定義參數時,這個參數要設置成pos
$.ajaxFileUpload({ url : 'upload',
secureuri : false, fileElementId : 'fileToUpload',
dataType : 'json', data : {id:id},//這種寫法我在後台不管怎麼取,值都為null 就去網路了一下,最後還是沒有解決
success : function(data, status) { $('#viewImg').attr('src',data.picUrl);
}, error : function(data, status, e) {
alert('上傳出錯'); }
})
這樣就與options參數說明中data參數不符合了,最終還是沒有找到原因是那點沒有寫正確。
3. Ajax為什麼能解決跨域
不僅僅是ajax,ajax只是非同步通信方式,你用同步的方式也可以實現跨域。
所以和是不是ajax沒毛線關系。
什麼是跨域:
瀏覽器對於javascript的同源策略的限制,例如a.cn下面的js不能調用b.cn中的js,對象或數據(因為a.cn和b.cn是不同域),所以跨域就出現了.
上面提到的,同域的概念又是什麼呢??? 簡單的解釋就是相同域名,埠相同,協議相同
jsonp:
jsonp全稱是JSON with Padding,是為了解決跨域請求資源而產生的解決方案,是一種依靠開發人員創造出的一種非官方跨域數據交互協議。
一個是描述信息的格式,一個是信息傳遞雙方約定的方法。
jsonp的產生:
1.AJAX直接請求普通文件存在跨域無許可權訪問的問題,不管是靜態頁面也好.
2.不過我們在調用js文件的時候又不受跨域影響,比如引入jquery框架的,或者是調用相片的時候
3.凡是擁有src這個屬性的標簽都可以跨域例如<script><img><iframe>
4.如果想通過純web端跨域訪問數據只有一種可能,那就是把遠程伺服器上的數據裝進js格式的文件里.
5.而json又是一個輕量級的數據格式,還被js原生支持
6.為了便於客戶端使用數據,逐漸形成了一種非正式傳輸協議,人們把它稱作JSONP,該協議的一個要點就是允許用戶傳遞一個callback參數給服務端,
demo1:基於script標簽實現跨域
舉個例子:我在http://study.cn/json/jsonp/jsonp_2.html下請求一個遠程的js文件
jsonp 傳遞給請求處理程序或頁面的,用以獲得jsonp回調函數名的參數名(默認為:callback)
jsonpCallback 自定義的jsonp回調函數名稱,默認為jQuery自動生成的隨機函數名
這里回調函數就是success
基本上就是這些了,還有iframe標簽img標簽,都可以,一個是描述信息的格式,一個是信息傳遞雙方約定的方法。這個就算是跨域吧,跨域也就是只是一種格式。
4. asp.net 用Ajax上傳多張圖片
建議使用jquery的上傳插件:jquery.multfile.js,非常方便~可以到相關網站上看下,真的很簡單~
網站:http://www.fyneworks.com/jquery/multiple-file-upload/
5. 怎麼用ajax提交file文件上傳
上傳的文件是沒有辦法和表單內容一起非同步的,可考慮使用jquery的ajaxfileupload,或是其他的插件,非同步上傳文件後,然後再對表單進行操作。