2017-08-08 3 views
1

でJSONで予期しないトークン私は、Ajaxの方法を使用してレコードのステータスを更新しようと しかし、このエラーで立ち往生しています:位置にJSONでにSyntaxError予期しないトークン0C#MVCのjQueryのAjax - にSyntaxError位置0

コントローラコード:

[HttpGet] 
public ActionResult UpdateStatus(string uniqueId, string statusId) 
{ 
    try 
    { 
    HM.Services.EnquiryService enquiryService = new Services.EnquiryService(unitOfWork, new SQLRepository<Enquiries>(unitOfWork)); 
    var userModel = enquiryService.UpdateStatus(new Guid(uniqueId), Convert.ToInt32(statusId)); 
    if (userModel != null) 
    { 
     return Json(new ReturnMsgDefault { type = "success", title = "Success", msg = "Enquiry status changed successfully." }, JsonRequestBehavior.AllowGet); 
    } 
    else 
    { 
    return Json(new ReturnMsgDefault { type = "error", title = "Failed", msg = "Enquiry status change failed!" }, JsonRequestBehavior.AllowGet); 
    } 
    } 
    catch (Exception exc) 
    { 
    return Json(new ReturnMsgDefault { type = "error", title = "Error occurred", msg = exc.Message }, JsonRequestBehavior.AllowGet); 
    } 
} 

のjQueryコード:

var PostData = {}; 
PostData.uniqueId = enquiryGuid; 
PostData.statusId = statusId; 
$.ajax({ 
type: 'get', 
dataType: 'json', 
cache: false, 
url: '@(AppStaticClass.GetBaseUrl() + "Enquiry/UpdateStatus")', 
data: PostData, 
success: function (ReturnData) { 
debugger 
if (ReturnData.type == 'success') { 
    grid.reload(); 
} 
ShowMessage(ReturnData.type, ReturnData.title, ReturnData.msg); 
}, 
complete: function (msg) { 
}, 
error: function (xhr, ajaxOptions, thrownError) { 
ShowMessage('error', 'Error', thrownError); 
} 
}); 

誰かが私をここに助けることはできますか?

+0

コンソールから不正なトークンが報告されましたか?パースできない文字列によってエラーが発生した場合は、AJAX呼び出しで 'dataType: 'json''を削除してみてください。 –

+0

データ型を削除: 'json'、今、私は応答を見ることができますが、代わりにjsonのhtml形式です。 – Rajendra

+0

成功したメソッドの応答はhtml形式であり、期待されるjson値を取得できません。例えば:成功、msg、.. – Rajendra

答えて

0

エラーを再現するためのテストプロジェクトを作成しました。私ができなかった。 は、ここで私は

public class AssetsController : Controller 
{ 
    public ActionResult Index() 
    { 
     return View(); 
    } 

    [HttpGet] 
    public ActionResult UpdateStatus(string uniqueId, string statusId) 
    { 
     try 
     { 
      if (true) 
      { 
       return Json(new ReturnMsgDefault { type = "success", title = "Success", msg = "Enquiry status changed successfully." }, JsonRequestBehavior.AllowGet); 
      } 
      else 
      { 
       return Json(new ReturnMsgDefault { type = "error", title = "Failed", msg = "Enquiry status change failed!" }, JsonRequestBehavior.AllowGet); 
      } 
     } 
     catch (Exception exc) 
     { 
      return Json(new ReturnMsgDefault { type = "error", title = "Error occurred", msg = exc.Message }, JsonRequestBehavior.AllowGet); 
     } 
    } 
} 
public class ReturnMsgDefault 
{ 
    public string type { get; set; } 
    public string title { get; set; } 
    public string msg { get; set; } 
} 

を使用したコードと私の見解

<body> 
    <div> 
     <script> 
      var PostData = {}; 
      PostData.uniqueId = "dwfsdf"; 
      PostData.statusId = "sdfsdfsdf"; 
      $.ajax({ 
       type: 'get', 
       dataType: 'json', 
       cache: false, 
       url: '@Url.Action("UpdateStatus")', 
       data: PostData, 
       success: function (returnData) { 
        console.log(returnData.title); 
       }, 
       complete: function (msg) { 
       }, 
       error: function (xhr, ajaxOptions, thrownError) { 
        ShowMessage('error', 'Error', thrownError); 
       } 
      }); 
      function ShowMessage() 
      { 

      } 
     </script> 
    </div> 
</body> 

であると私はすべてのエラーを得ることはありません。 The result seems perfectly okay コントローラがどのパスをとっているか知っていますか?エラーパスの場合は、exc.Messageの内容をチェックして、JSONを壊す文字が含まれていないことを確認します。

私が提供したわずかに変更されたコードを試しても効果はありますか?

+0

@Widrr:ありがとう、ありがとうございました。問題はPermission custom-action-filter属性であり、これはカスタムエラーページにリダイレクトされましたが、ajaxメソッドのために応答も見られませんでした。 – Rajendra

関連する問題