0

我正在尝试为下拉列表连接和更改事件 jQuery 处理程序,一旦用户更改下拉列表中的值,我必须使用从我的控制器操作返回的 html 填充 div“付款”。

这是我到目前为止所拥有的,我不知道为什么它不起作用或如何进一步追求这一点。更改下拉值没有错误或响应。非常感谢任何帮助!

cshtml:

<script type="text/javascript">
$(document).ready(function () {
    $("#PaymentType").change(function () {
        var selection = $("#PaymentType").val();
        var dataToSend = {
            paymentType: selection
        };

        $.ajax({
            url: "Order/PaymentChanged",
            type: "GET",
            data: dataToSend,
            success: function (data) {
                $("#payment").text("server returned:" + data.agent);
            }
        });
    });
});
</script>

@using (Html.BeginForm())
{
   <div id = "payment">
   <br />
   @Html.Label("Select payment method")
   <br />
   <select id="PaymentType" name="PaymentType">
     <option value="CreditCard">Credit Card</option>
     <option value="Cash">Cash</option>
     <option value="Check">Check</option>
   </select>
   </div>
 }

订单控制器.cs

    public JsonResult PaymentChanged(string paymentType)
    {
        return Json(new { agent = "sample html" }, JsonRequestBehavior.AllowGet);
    }

标准的,基本未更改的 _Layout.cshtml 文件,其中包含所有 jQuery src,包括 src="/Scripts/jquery-1.5.1.min.js"

4

1 回答 1

0

代码对我来说看起来不错,所以我会回答“如何进一步追赶”

  • 使用Chrome 的调试器Firebug来查看XHR 的状态
  • 在调试模式下运行您的 MVC 应用程序(来自 Visual Studio)并在您的控制器中放置一个断点以查看它是否实际被调用以及是否paymentType正确发送(前者更有可能因为您的代码看起来不错)。
于 2012-04-15T15:30:37.063 回答