Zer*_*ity 2 asp.net jquery webmethod
我正在使用summernote,我想将图像上传到我的网络服务器..下面是我正在使用的代码
默认.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>
Run Code Online (Sandbox Code Playgroud)
默认.asp.cs
[System.Web.Services.WebMethod]
public static string UploadImage(HttpPostedFileBase file)
{
//Saving to Server
return imageUrl;
}
Run Code Online (Sandbox Code Playgroud)
但它不是调用服务器端函数。另外,alert(imageUrl) 给了我完整的页面 html。
我错在哪里?
使用网络信息更新问题(谷歌浏览器)

编辑 2
建议后更新
代码:
url: "About.aspx/UploadImage",
data: "multipart/form-data",
type: 'POST',
cache: false,
contentType: "application/json",
Run Code Online (Sandbox Code Playgroud)
错误:

注意:我已将 Page 从 Default.aspx 更改为 about.aspx(但代码相同)
WebMethod或“页面方法”期望contentType: "application/json;
附加参考:Scott Guthrie - JSON 劫持以及 ASP.NET AJAX 1.0 如何避免这些攻击:
ASP.NET 为基于 GET 和 POST 的 ASP.NET AJAX Web 方法强制实施了一个内置的保护验证层,即无论使用的 HTTP 动词如何,ASP.NET始终要求 HTTP Content-Type标头设置为值 application/json。如果未发送此内容类型标头,ASP.NET AJAX 将拒绝服务器上的请求。
alert在返回页面(HTML),您的通话成功地称为page(Default.aspx的),但webmethod在不调用。请参阅此方向/可能的解决方案。
我觉得你有点糊涂了,可能是我的错。我会尽量简化:
contentType必须是multipart/form-data
contentType是application/json嗯...
| 归档时间: |
|
| 查看次数: |
2349 次 |
| 最近记录: |