我正在使用summernote,我想将图像上传到我的网络服务器..以下是我正在使用的代码
Default.aspx的
<script type="text/javascript">
$(document).ready(function () {
$('#summernote').summernote({
onImageUpload: function (files, editor, $editable) {
alert('image?');
var formData = new FormData();
formData.append("file", files[0]);
$.ajax({
url: "Default.aspx/UploadImage",
data: formData,
type: 'POST',
cache: false,
contentType: false,
processData: false,
success: function (imageUrl) {
alert(imageUrl);
if (!imageUrl) {
// handle error
return;
}
editor.insertImage($editable, imageUrl);
},
error: function () {
alert('error');
// handle error
}
});
console.log('image upload:', files, editor, $editable);
}
});
});
</script>
Default.asp.cs
[System.Web.Services.WebMethod]
public static string UploadImage(HttpPostedFileBase file)
{
//Saving to Server
return imageUrl;
}
但它没有调用服务器端功能。另外,alert(imageUrl)给了我完整的页面HTML。
我哪里错了?
使用网络信息更新问题(谷歌浏览器)
修改2
建议后更新
代码:
url: "About.aspx/UploadImage",
data: "multipart/form-data",
type: 'POST',
cache: false,
contentType: "application/json",
错误:
注意:我已将Page从Default.aspx更改为about.aspx(但代码相同)
答案 0 :(得分:4)
WebMethod
或&#34; Page方法&#34; expect contentType: "application/json;
其他参考:Scott Guthrie - JSON Hijacking and How ASP.NET AJAX 1.0 Avoids these Attacks:
ASP.NET为基于GET和POST的ASP.NET AJAX Web方法强制执行内置的保护验证层,无论使用何种HTTP谓词,ASP.NET always 要求将HTTP Content-Type标头设置为值application / json 。它不会发送此内容类型标头,ASP.NET AJAX将拒绝服务器上的请求。
alert
返回页面(html),您的调用成功称为page
(default.aspx),但是webmethod
不被调用。请参阅this for direction/possible solution。
我觉得你很困惑,可能是我的错。我会尝试简化:
contentType
必须为multipart/form-data
contentType
为application/json
... H个