2013-01-21 35 views
1

我正在尝试关注this article以使用jQuery AJAX从webmethod获取值。我已将它缩减为单一输入形式。msg.d from asp.net webmethod is undefined

问题是,它总是失败,msg.d总是未定义。在Firebug中,我可以看到POST和数据字符串格式正确。我不能,因为我一生都在弄清楚为什么这一直会失败。在我的webmethod中设置的断点被击中,但页面在完全运行之前显示失败消息。

任何想法发生了什么?这里是我的代码:

基本形式:

<div id="contact"> 
    <ul> 
     <li><div>Name*</div> 
     <input name="ctl00$ContentPlaceHolder1$txtName" type="text" id="ctl00_ContentPlaceHolder1_txtName" /> 
     </li>    
     </ul> 
     <ul class="submit"> 
      <li>* required</li> 
      <li class="submit_button"> 

     <input type="submit" name="ctl00$ContentPlaceHolder1$btnSubmit" value="Submit"  id="ctl00_ContentPlaceHolder1_btnSubmit" /> 
      </li> 
     </ul> 
    </div> 

的jQuery:

<script type="text/javascript"> 

    jQuery(document).ready(function() { 

     $("#ctl00_ContentPlaceHolder1_btnSubmit").click(function() { 
      var name = $("#ctl00_ContentPlaceHolder1_txtName"); 
      $.ajax({ 
       type: "POST", 
       dataType: "json", 
       contentType: "application/json", 
       url: "Default.aspx/SendEmail", 
       data: "{'name':'" + name.val() + "'}", 
       success: function (msg) { 
        alert("success"); 
        alert(msg.d); 
       }, 
       error: function (msg) { 
        alert("fail"); 
        alert(msg.d); 
       } 
      }); 
     }); 

    }); 

</script> 

的WebMethod:

[WebMethod] 
public static string SendEmail(string name) 
{ 
    return "success"; 
} 
+0

什么是故障消息? – lante

+0

@lante:警报中的失败消息是'未定义的' – Brett

+0

您是否正在使用ASP.Net 2.0? – stuartd

回答

-1

您在返回从服务器字符串,而不是JSON作为AJAX dataType是寻找。字符串没有属性d

删除dataType选项,并尝试alert(msg)

+0

我已经删除了数据类型参数,但警报(MSG)现在返回[对象的对象]所示 – Brett

+0

代码字符串,警报提示你虽然得到一个对象...使用'的console.log(味精)'和检查数据浏览器控制台...你在那里看到什么?也可以检查控制台中的完整请求,并看到实际的响应文字 – charlietfl

+0

对象{readyState = 0,状态= 0,statusText =“错误”} – Brett