【发布时间】:2018-12-04 11:44:58
【问题描述】:
我正在努力让它发挥作用。如果我包含 dataType: "json" 我总是被抛出 request.fail 但浏览器控制台中实际上没有显示任何错误。如果我删除 dataType: "json" 我无法获得返回响应:在控制台中出现错误:Uncaught TypeError: Cannot read property 'Guid' of undefined。
其他一切都运行良好 - 文件上传并写入数据库就好了。
JQuery:
$( document ).on( "change", "input[name='files']", function( e ) {
var files = $( this ).prop( "files");
var data = new FormData();
var request;
var result;
var modal = $( this ).closest( ".modal" );
var itemid = modal.data( "itemid" );
for( var i = 0; i < files.length; i++ ) {
data.append( "id", itemid );
data.append( "file", files[i] );
request = $.ajax( {
type: "POST",
url: "/webservices/webservices.asmx/UploadFile",
data: data,
// dataType: "json",
contentType: false,
processData: false
} );
request.done( function( response ) {
result = response.d;
console.log( result.Guid );
} );
request.fail( function( response ) {
console.log( response.responseText );
} );
request.always( function() {
data.delete( itemid );
data.delete( files[i] );
} );
}
} );
WebMethod(为论坛目的而简化):
public class Response
{
public Guid Guid;
public bool Toggle;
public string Date;
public string Text;
public string Image;
}
[WebMethod]
public Response UploadFile()
{
Response Response = new Response();
Response.Guid = BasePage.NewGuid;
Response.Text = "Hello, world!";
Response.Image = "/images/test.png";
return Response;
}
控制台(request.done - 无数据类型):
Uncaught TypeError: Cannot read property 'Text' of undefined
at Object.<anonymous> (eandf.js:218)
at j (jquery-latest.min.js:2)
at Object.fireWith [as resolveWith] (jquery-latest.min.js:2)
at x (jquery-latest.min.js:4)
at XMLHttpRequest.b (jquery-latest.min.js:4)
控制台(request.fail - 数据类型:json):
<?xml version="1.0" encoding="utf-8"?>
<Response xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="<stripped out>">
<Guid>53dc43ef-0fe5-4aaf-9866-06d23e3161d2</Guid>
<Toggle>false</Toggle>
<Text>Hello, world!</Text>
<Image>/images/test.png</Image>
</Response>
【问题讨论】:
标签: javascript jquery asmx webmethod