0

いくつかの異なる ASP.NET ページに登録プロセスを実装しています。ページ自体は機能しますが、いずれかで送信をクリックすると、次のようなメッセージが表示されます

{"成功":true,"例外":null,"InnerException":null,"ReturnVal":3}

ReturnVal私が受け取っているのは正しいです。AJAX関数が完了すると、停止してエラーまたは成功のどちらにも続かず、JSON結果を表示するだけのようです。ここにスニペットがあります:

 <input type="submit" value="Next" id="Package" onclick="return  DoAjaxSubmit(this);"/>
    </div>
</div>
</p> 

<script type="text/javascript">

   function DoAjaxSubmit(btnClicked) {
       var form = $(btnClicked).parents('form');
       $.ajax({
           type: "POST",
           url: form.attr('action'), //'<%=ResolveUrl("~/register/go") %>',
           data: form.serialize(),
           dataType: "json",
           error: function (xhr, status, error) {
           },
           success: function (response) {
                if (response != null) {
                   if (!response.Successful) {
                       alert("Please select the Package");
                       return false;
                   }
                   else {
                           switch (response.ReturnVal) {
                       case 0:
                           window.location.href = "/Register/Free";
                           break;
                       case 1:
                           window.location.href = "/Register/Confirmation";
                           break;
                       case 2:
                           window.location.href = "/Register/AdOptions";
                           break;
                       case 3:
                           window.location.href = "/Register/PrintOptions";
                           break;
                       case 4:
                           window.location.href = "/Register/JobOptions";
                           break;
                       case 5:
                           window.location.href = "/Register/Landing";
                           break;
                       }
                   }
               }
           }
       });
       return false;
   }

コントローラー:

[AcceptVerbs(HttpVerbs.Post)]
    [RestrictedAction(new[] { "user" },null)]
    public JsonResult Package(string[] package)
    {
        var t = new TransactionResult();

        if (!string.IsNullOrEmpty(package[0]))
            {
                //Reset Session values in case of start over
                Session[SessionNames.PRINTOPTIONS] = null;
                Session[SessionNames.JOBOPTIONS] = null;
                Session[SessionNames.ADOPTIONS] = null;
                Session[SessionNames.LANDING] = null;
                Session[SessionNames.QUANTITY] = null;
                Session[SessionNames.PACKAGE1] = package;

                //Determine which options page to navigate to
                t.ReturnVal = 6;
                foreach (var p in package)
                {
                    if (Convert.ToInt32(p) < t.ReturnVal && Convert.ToInt32(p) != 1)     t.ReturnVal = Convert.ToInt32(p);
                }
                if (t.ReturnVal == 6) t.ReturnVal = 1;

                t.Successful = true;  
            }
        return Json(t);
    }

送信ボタンの戻り値を削除し、return false; を追加して、JSON結果の Successful 属性を false に設定しcontrollerて、エラー部分が機能するかどうかを確認しようとしましたが、同じことを行うだけです (それを除く)。 false を返しますが、エラー メッセージは表示されません)。

編集コンソールエラー

Uncaught ReferenceError: $ is not defined Package:283
    DoAjaxSubmit Package:283
    onclick Package:263
Resource interpreted as Document but transferred with MIME type application/json:   "http://192.168.0.21:82/register/package".
4

2 に答える 2

0

表示されるエラーメッセージを考えると、jQueryスクリプトを登録していないようです。使用する前に、jQueryを登録していることを確認してください。

<script src="@Url.Content("~/Scripts/jquery-1.7.1.min.js")" type="text/javascript"></script>

また、関数を使用している別のクライアント側のjavascriptフレームワークを使用して$いる場合は、次のことができconfigure jQuery with noConflictます。

于 2013-01-29T16:49:01.120 に答える
0

1つ間違っています:

switch (response.returnValue)

次のようにする必要があります。

switch (response.ReturnVal)

JSON にあるものと同じプロパティ名を JS で使用する必要があります。

于 2013-01-29T16:10:48.517 に答える