首页 > 解决方案 > jQuery post 不适用于 safari 但适用于 chrome

问题描述

我一直面临一个 safari 问题,其中 JQuery post 方法适用于 chrome,但它不适用于 safari,除非我使用这段代码将 JQuery post async 设置为 false

$.ajaxSetup({ async: false });

页面重定向也不适用于 safari,但它适用于 chrome

window.location.href = data.url;

知道为什么我会在 safari 上出现这种行为以及如何解决它。这是我正在使用的代码

  $('#submit').click(  function () {  //post 
        if ($('form').validate().checkForm() === false) {
            alert('Form is invalid.');
            return;
        }

        var tool = $("#Tool").val();
        var email = $("#Email").val();
        var message = $("#Message").val();
        var attachement0 = $("#Attachement0").val();
        var attachement1 = $("#Attachement1").val();
        var attachement2 = $("#Attachement2").val();
        var attachement3 = $("#Attachement3").val();
        var attachement4 = $("#Attachement4").val();

        var dataToPost = {};
        dataToPost.Tool = tool;
        dataToPost.Email = email;
        dataToPost.Message = message;
        dataToPost.Attachement0 = attachement0;
        dataToPost.Attachement1 = attachement1;
        dataToPost.Attachement2 = attachement2;
        dataToPost.Attachement3 = attachement3;
        dataToPost.Attachement4 = attachement4;

      // $.ajaxSetup({ async: false });
       $.post("@Url.Action("BugReport_Send_JQuery","BugReport")", { model: dataToPost }).done(function (data) {
           if (data.status == 1) {
               alert(data.message);
               window.location.href = data.url;
           }
           else if (data.status == 0) alert(data.error);
       });
    });

服务器端发布方法

      [HttpPost]
    public async Task<IActionResult> BugReport_Send_JQuery(User_BugReportViewModel model)  
    {
        if (ModelState.IsValid)
        {
            var bugReport = new BugReportModel()
            {
                Tool = model.Tool,
                Email = model.Email,
                Message = model.Message,
                Attachement0 = model.Attachement0,
                Attachement1 = model.Attachement1,
                Attachement2 = model.Attachement2,
                Attachement3 = model.Attachement3,
                Attachement4 = model.Attachement4,
                Resolved = false,
                CreationDate = DateTime.Now,
                ResolutionDate = new DateTime(),
            };

            try
            {
                await appDBContext.BugReportsTB.AddAsync(bugReport);
                await appDBContext.SaveChangesAsync();
            }
            catch (Exception e)
            {
                return Json(new { status = 0, error = e.Message });
            }

            return Json(
            new
            {
                status = 1,
                message = "A ticket has been created, Thank you for your coperations!",
                url = Url.Action("TicketCreate", "Email", new { email = bugReport.Email }),
            });
        }
        return Json(new { status = 0, error = "something went wrong!" });
    }

标签: javascriptjqueryajaxasp.net-mvcsafari

解决方案


推荐阅读