2013-08-05 45 views
0

我创建了一个简单的WebMethod来获取远程服务器上文件的大小。 JavaScript消息总是显示“失败”。我错过了什么?ASP.NET无法使用JQuery使用WebMethod

TEST.ASPX.CS

[WebMethod] 
public static string GetRecordingFileSize(string url) 
{ 
    try 
    { 
     WebRequest wr = (HttpWebRequest)WebRequest.Create(url); 
     var response = wr.GetResponse(); 
     return response.ContentLength.ToString(); 
    } 
    catch (WebException webException) 
    { 
     return webException.ToString(); 
    } 
} 

Test.aspx的

$.ajax({ 
    type: "GET", 
    url: "TEST.aspx/GetRecordingFileSize", 
    data: "{ url : '" + $('#txtSoundFile').val() + "' }", 
    contentType: "application/json; charset=utf-8", 
    dataType: "json", 
    success: function (msg) { 
     alert("okay"); 
     $("#soundFile").attr("src", "Images/check.png"); 
    }, 
    error: function (xhr, status) { 
     alert("not okay"); 
     $("#soundFile").attr("src", "Images/error.png"); 
    } 
}); 
+0

当您在cs文件调试时,该请求来呢?您从js文件发送的url是否正确地传递给GetRecordingFileSize方法? –

+0

检查此链接:http://stackoverflow.com/questions/17901825/aspnet-session-between-jquery-ajax-calls-in-a-cors-enviroment/17999886#17999886 我希望它能帮助。 – maverickosama92

+0

您可能希望通过提醒客户端来检查错误。如果您使用的是jquery 1.8+,则应该使用.done或.always代替.success,因为它已被弃用。请检查[这里](http://api.jquery.com/jQuery.ajax/#jqXHR) –

回答

0

您可能需要使用POST而不是GET。这post已经有了很好的例子。

$.ajax({ 
    type: "POST", 
    url: "TEST.aspx/GetRecordingFileSize", 
    data: "{ url : '" + $('#txtSoundFile').val() + "' }", 
    contentType: "application/json; charset=utf-8", 
    dataType: "json", 
    success: function (msg) { 
     alert("okay"); 
     $("#soundFile").attr("src", "Images/check.png"); 
    }, 
    error: function (xhr, status) { 
     alert("not okay"); 
     $("#soundFile").attr("src", "Images/error.png"); 
    } 
}); 

如果你需要使用GET,那么你就必须有[ScriptMethod(UseHttpGet =真)]

[WebMethod] 
[ScriptMethod(UseHttpGet=true)] 
public static string GetRecordingFileSize(string url) 
{ 
     //your code 
} 
相关问题