Safari错误。 Javascript ajax json对象 - 无法获取属性。对象可能不再存在

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Safari错误。 Javascript ajax json对象 - 无法获取属性。对象可能不再存在相关的知识,希望对你有一定的参考价值。

我有一个对php后端的Ajax调用。它在chrome中工作得很好但是当我在safari中运行它时,我得到一个'无法获取属性,对象可能不再存在'错误代码中的这一行 -

dataType:“JSON”,

这是功能。可能真的很简单。我实际上在网上找到了这个代码并重新利用它。不是真正的开发人员只是捏造我的方式:)

任何提示将非常感谢!正如我所说,Chrome中没有错误。

谢谢戴夫

            function insertProjectData() {

            var projectuid=$("#projectuid").val();
            var projectIdentifier=$("#projectIdentifier").val();
            var projectPIRDate=$("#projectPIRDate").val();
            var projectName=$("#projectName").val();
            var projectManagerName=$("#projectManagerName").val();
            var projectSponsorDept=$("#projectSponsorDept").val();
            var projectSponsorName=$("#projectSponsorName").val();
            var projectSponsorContact=$("#projectSponsorContact").val();
            var projectGTMDate=$("#projectGTMDate").val();
            var projectTargetBudget=$("#projectTargetBudget").val();
            var projectActualCost=$("#projectActualCost").val();
            var projectScope=$("#projectScope").val();
            var projectScopeDelivered=$("#projectScopeDelivered").val();

            if ($('#projectDeliveredTimeline').is(':checked')) {
                var projectDeliveredTimeline = "Yes";
            }
            else {
                var projectDeliveredTimeline = "No";
            }
            if ($('#projectDeliveredPlan').is(':checked')) {
                var projectDeliveredPlan = "Yes";
            }
            else {
                var projectDeliveredPlan = "No";
            }
            var projectComments=$("#projectComments").val();

            // AJAX code to send data to php file.
            $.ajax({
                type: "POST",   q
                url: "insert-projectdata.php",
                data: {projectuid:projectuid,projectIdentifier:projectIdentifier,projectPIRDate:projectPIRDate,projectName:projectName,projectManagerName:projectManagerName,projectSponsorDept:projectSponsorDept,projectSponsorName:projectSponsorName,projectSponsorContact:projectSponsorContact,projectGTMDate:projectGTMDate,projectTargetBudget:projectTargetBudget,projectActualCost:projectActualCost,projectScope:projectScope,projectScopeDelivered:projectScopeDelivered,projectDeliveredTimeline:projectDeliveredTimeline,projectDeliveredPlan:projectDeliveredPlan,projectComments:projectComments},
                dataType: "JSON",
                success: function(data) {
                    closeitem(projectarea);
                    $("#ProjectSaved").show();
                    setTimeout(function() { $("#ProjectSaved").hide(); }, 2500,);
                    $('form[name=projectForm]').get(0).reset();
                    window.location.replace("lessons.php");
                },
                error: function(err) {
                    console.log(err);
                }

            });
        }

奇怪的是这(另一页)工作正常!?...

function insertAreaData() {
            var areauid=$("#areauid").val();
            var areaName=$("#areaName").val();
            var areaDesc=$("#areaDesc").val();

            // AJAX code to send data to php file.
            $.ajax({
                type: "POST",
                url: "insert-areadata.php",
                data: {areauid:areauid,areaName:areaName,areaDesc:areaDesc},
                dataType: "JSON",
                success: function(data) {
                    closeitem(areaarea);
                    $("#AreaSaved").show();
                    $('form[name=AreaForm]').get(0).reset();
                    setTimeout(function() { $("#AreaSaved").hide(); }, 2000,);
                    window.location.replace("lessons.php");
                },
                error: function(err) {
                    console.log(err);
                }

            });

        }

编辑:我现在已经在Internet Explorer中测试并遇到了同样的问题。

答案

事实证明,该表单正在发布一个页面正在重新加载,并且出于某种原因谷歌Chrome正在为我处理此问题,而Safari和IE则没有。

我在表单中添加了以下onsubmit注释:

<form id="Project" name="projectForm" onsubmit="return false;">

当我点击提交按钮而不是运行javascript时,它阻止了它的执行。

为了完整起见,这里是提交:

<input type="submit" class="submit" id="projectSubmit" onclick="insertProjectData()" value="Save Project">

所以预期最终会有一个简单的事情......

以上是关于Safari错误。 Javascript ajax json对象 - 无法获取属性。对象可能不再存在的主要内容,如果未能解决你的问题,请参考以下文章

本地加载 XML 的 jQuery Ajax 问题 - Safari 版本 11.0 - 错误:XMLHttpRequest 无法加载 .xml。预检响应不成功

[JavaScript]_[初级]_[不使用JQuery原生Ajax提交表单]

[JavaScript]_[初级]_[不使用JQuery原生Ajax提交表单]

[JavaScript]_[初级]_[不使用JQuery原生Ajax提交表单]

跨域 ajax 不适用于移动 Safari 中的重定向

对远程站点的本地 AJAX 调用在 Safari 中有效,但在其他浏览器中无效