2013-03-30 88 views
0

我想通过点击代码隐藏文件中的一些标签为jQuery.ajax aspx调用SendInfo方法。但是所有时间都会出现'错误'部分,而不是成功,并且字符串不是从方法返回的。jQuery Ajax和WebMethod调用

请告诉我,请问我在这里做错了什么?

刚开始学习ajax。

的Index.aspx:

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server"> 
<script type='text/javascript' src='../../Scripts/jquery-1.4.1.min.js'></script> 
<script type="text/javascript" > 
    $(document).ready(function() { 
     $("#Result").click(function() { 
      $.ajax({ 
       type: "POST", 
       url: "Index.aspx/SendInfo", 
       data: "{}", 
       contentType: "application/json; charset=utf-8", 
       dataType: "json", 
       success: function (msg) { 
        $("#Result").text(msg.d); 
       }, 
       error: function() { 
        $("#Result").text("adas"); 
       } 
      }); 
     }); 
    }); 
</script> 
<div id="Result">Click here for the time.</div> 
</asp:Content> 

代码隐藏文件:

public class Index : ViewPage 
{ 
    [WebMethod] 
    public static string SendInfo() 
    { 
     return "Info actually sended"; 
    } 
} 

回答

0

快速浏览我想说这可能是由于在 “数据类型” 参数设置为 “JSON” 来。正如这告诉它你期待返回一个JSON对象,所以它会尝试解析这个响应,并因为它是纯文本而失败。

你可以完全删除“dataType”参数(也是空的“data”之一),jQuery将冒险猜测返回的内容,并且在这种情况下应该正确地预测响应是纯文本。

您可能还需要指定AJAX位置的完全限定URL,并将成功函数中的“msg.d”更改为“msg”,但这取决于服务器上设置的特定选项( “.d”是Microsoft推出的一项安全功能)。

+0

这些都不会帮助 – user2227145

+0

确定,将错误函数签名更改为“error:function(jqXHR,status,error)”,在错误函数内粘贴一个断点并调试脚本以查看状态和错误返回值是。这可能会让您更深入地了解问题。 – TheManWithNoName

+0

状态:错误;错误:未定义。实际上是 – user2227145