没有通过ajax调用获取控制器中的参数值 -

时间:2014-06-25 16:39:49

标签: jquery ajax asp.net-mvc

该应用程序位于.Net framework 3.5和MVC 2 for .NetFramework 3.5

该视图具有jquery功能,单击Add Product:

按钮

这将使用Action ProductSubmission

调用控制器WorkFlowTest
The part of  controller is:

  [AcceptVerbs(HttpVerbs.Post)]

     public ActionResult ProductSubmission(string prodSelected,  
          ViewModels.WorkFlowTestViewModel SubmissionModelView)
     {
        SubmissionModelView.selectedProd = prodSelected   ;
        return View("Submission", SubmissionModelView);
     }

The part of  view is:

    <script src="/Scripts/jquery-1.4.1.js" type="text/javascript"></script>
    <script src="/Scripts/jquery-1.4.1.min-vsdoc.js" type="text/javascript"></script>
    <script src="/Scripts/jquery-1.4.1-vsdoc.js" type="text/javascript"></script>
    <script type="text/javascript">
      $(function() {
       $("#addProd").click(function() {
        var selectedID = $("#prodList").val();
        $.ajax({
        url: "/WorkFlowTest/ProductSubmission/" ,
            type: 'POST',
            data: {"productID" : $("#prodList").val()},
            contentType: 'application/json; charset=utf-8',
            success: function(data) {
                //alert(data.success);
                alert("success");
            },
            error: function() {
                alert("error");
            }
        });
    });
});

 <select id ="prodList" style = "width:150px">
                        <option value ="GL " >GL </option>
                        <option value ="Property"   
                                     selected="selected">Property </option>
                        <option value ="Package" >Package </option>
                        <option value ="Island" >Island </option>
                        </select>
                     </td>

<td style="width: 313px"><input type ="button" id="addProd" value ="Add Product" />

在jQuery函数中,我得到下拉“prodList”的选定值,但参数,prodSelected in action,控制器的ProductSubmission没有得到值;虽然我在Ajax调用的“data:”部分中指定了它。

有人可以告诉我是否缺少或如何调试以查看参数未被传递的原因。或者是否有任何其他方法可以在控制器中获取所选值。

我添加了元标记

<head runat="server">
 <meta http-equiv="X-UA-Compatible" content="IE=edge;chrome=1" />
<title> Submission </title>

更改了该功能  data:JSON.stringify({“productID”:$(“#prodList”)。val()}),

这在IE 9中不起作用,说JSON未定义,并且在chrome中这可以工作,但值为null。

变化如下: 控制器是: public ActionResult ProductSubmission(string productID,ViewModels.WorkFlowTestViewModel SubmissionModelView)

我添加了元标记

<head runat="server">
 <meta http-equiv="X-UA-Compatible" content="IE=edge;chrome=1" />
<title> Submission </title>

jquery函数:

data:JSON.stringify({productID:$(“#prodList”)。val()}),

正如所提到的,IE中的运行时错误“JSON未定义”但在chrome中它可以工作,但值仍为空。

2 个答案:

答案 0 :(得分:1)

更改您的操作方法,使其接受参数string productID而不是string prodSelected

答案 1 :(得分:0)

JSON.stringify()contentType

时,

application/json数据

data: JSON.stringify({"productID" : $("#prodList").val()})