Я изо всех сил пытаюсь заставить это работать.Если я включаю dataType: "json", я всегда получаю запрос на request.fail, но в консоли браузера на самом деле не отображаются ошибки.Если я удаляю dataType: "json", я не могу получить ответ возврата: получить ошибку в консоли: Uncaught TypeError: Невозможно прочитать свойство 'Guid' из неопределенного.
Все остальное работает отлично - файл загружается и записывается вбаза данных просто отлично.
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 - no dataType):
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 - с dataType: 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>