0

我在 ASP MVC & C# 中工作,我想做的是类似于以下内容。

public JsonResult SendMessage(SMSTestViewModel model)
{
    if (//logic here)
    {
        string phonenumber = model.phone.ToString();
        string derp = string.Empty;
        //SMS.SendSMS(phonenumber, "testing heheheheh", derp);
        var result = new { Success = "True", Message = "Good Job" };
        return Json(result, JsonRequestBehavior.AllowGet);
    }
    var result = new { Success = "False", Message = "Didn't work" };
    return Json(result, JsonRequestBehavior.AllowGet);
}

那是我控制器中的代码块,现在我试图在我的视图中使用以下内容引用它

<p>Please enter your phone number</p>
 <table>
  <tr>
    <td>Phone Number</td>
    <td> <input id = "phone" type ="text" name= "phone" /></td>
</tr>
</table>
<input type="button" value="Submit" id="sendMSG">

<script>
 $('sendMSG').click(function(){
$.getJSON('SMSTestController/SendMessage', function (data) {
    alert(data.Success);
    alert(data.Message);
}); 
});
</script>

由于某种原因,警报不会出现。这让我很困惑。我对 JSON、JQuery 和 Javascript 非常陌生,因此我们将不胜感激任何帮助或建议。

谢谢

编辑:

将 html 代码块更改为以下内容:

<input type="button" value="Submit" id="sendMSG">

 <script>
$('#sendMSG').click(function () {
    $.getJSON('@Url.Action("SendMessage","SMSTestController")', function (data) {
        alert(data.Success);
        alert("test");
        alert(data.Message);
    }); 
});
 </script>
4

2 回答 2

2

您呼叫中的 URL 很可能$.getJSON不正确。您拥有它相对于您当前正在查看的任何 URL。

尝试将该行更改为:

$.getJSON('@Url.Action("SendMessage", "SMSTestController")', function (data) {

这样,MVC 会为您的操作生成一个绝对 URL。

编辑:

您的按钮的 jQuery 选择器是错误的。

$('sendMSG')

由于您通过 id 搜索它,请使用:

$('#sendMSG')
于 2013-06-06T19:10:23.527 回答
1

将网址更改为以下内容应该可以正常工作

'/SMSTestController/SendMessage'

然而,更好的解决方案是马特提到的

'@Url.Action("SendMessage", "SMSTestController")'

另外,看看这个小提琴http://jsfiddle.net/Ukuyc/

于 2013-06-06T19:17:55.827 回答