MOSS 07 editform.aspx无法提交并转到空白的html页面

时间:2012-12-06 19:48:10

标签: javascript asp.net html sharepoint-2007

从Microsoft Blog找到解决方案...见下文

好的,开始我不喜欢随机这个词,但我在这个问题的测试用例中找不到任何关联,所以我将使用随机来描述这个问题的部分内容。

设置:我有一个列表,其中我为EditForm.aspx和NewForm.aspx创建了一个自定义UI。我在其中两个之间使用相同的JS文件和JavaScript。我已添加到谷歌地图,以帮助说明位置选择。我已经为" OK"添加了额外的代码。用于某些动态验证的按钮。我也做了很多动态菜单。所有用户都使用IE 9,该站点位于MOSS 2007服务器上。

问题:仅在EditForm.aspx上,单击OK" Randomly"导致立即白屏。表单未保存,在查看白色屏幕的源代码时,我找到一个空白的html页面。

我试图找到这个问题: - 我试图缩小用户和计算机的范围,发现它发生在每台计算机上的每个人身上(再一次"随机")。 - 我尝试禁用预先设置为" OK"按键 - 我尝试使用IE9的外部脚本调试代码,发现没有错误

我可以提供代码,但它有点长,我真的不知道从哪里开始。所以如果需要,我可以提供它。

提前感谢您的帮助。

编辑: 这是代码重新连接我的OK按钮(我将值重置为"保存"之前)

    var okBtns = $('input[value="Save"]')
    $.each(okBtns, function(index,value){
        okFunction=$(value).attr('onclick');
        $(value).attr('onclick','return false;')
        $(value).bind('click', function(){
            if ($('#'+StatusBox).val()=='Draft') {$('#'+StatusBox).val('New Request')}
            var err = clickOKbutton();
            if(err==0) {okFunction()};
        });
    });

这是clickOKbutton函数,它是代码前置于orgianal sharepoint操作的代码:

function clickOKbutton()
{
    //all of the imput validation i could ever wish for!!!!
    var NoteVal = ''
    var NameAry = $('#'+PersonnelBox).parent().children(":first").children("SPAN").children("SPAN");
    $.each(NameAry, function(index,value){
        var $n=$(value).html();     
        if(NoteVal.length==0) {NoteVal=$n} else {NoteVal=NoteVal+';'+$n};
    });
    //$('#'+AddNotes).val(NoteVal);

    var plh = $('#'+PersonnelBox).parent().html()
    userNameTx = $('#zz8_Menu').text();
    userNameTx = userNameTx.replace('Welcome ','');
    $.each(OICUsers, function(i,v){
        if(plh.indexOf(v) > -1 && st=='New Request'){
            $('#'+StatusBox).val('OIC Bypassed')
            $('#'+CommentsBox).val('OIC is travling on this TDY/TAD and cannot approve. So this request is bypassing the "OIC Approval" step')
        }
    });

    /*userNameTx = $('#zz8_Menu').text();
    userNameTx = userNameTx.replace('Welcome ','')

    $('#' + ModBox).closest('TR').show();*/
    var message=''
    message = detectFieldChanges(AllFieldsArray,AllOrgValArray,"Draft,New Request,Modified")        
    if(message.length>0){
        $('#'+ModBox).val(message);
        AutoResizeTextarea(ModBox);
    }

    message = detectFieldChanges(ValFieldsArray,OrgValuesArray,"Draft,New Request,Modified,OIC Approved,OIC Bypassed,Pending RFI,Ready for COS")
    userNameTx = $('#zz8_Menu').text();
    userNameTx = userNameTx.replace('Welcome ','');
    if(message.length>0&&$.inArray(userNameTx,COSUsers)==-1){
        $('#'+StatusBox).val('Modified').change;
        $('#'+StatusLongBox).val('Modified').change;
    }       


    //Subject box
    var pb = NoteVal;
    var ep = $('#'+ExtPersonnel).val();
    var ab = $('#'+AddressBox).val();
    var sd = $('#'+sDateBox).val();
    var ed = $('#'+eDateBox).val();
    var st = $('#'+StatusBox).val();
    var p = pb+';'+ep;
    var p = p.replace(/mossaspnetmembershipprovider:/g,'');
    var p = p.slice(0,-1);
    var ad = ab+' '+sd+' to '+ed;
    var s = 'eTDY | '+st+' - '+p+' - '+ad;
    if(s.length>255){
        var l = s.length-255;
        p = p.substring(0,p.length-l);
        s = 'eTDY | '+p+' - '+ad;
    }
    $('#'+Subject).val(s);

    //check Lat/Lng value
    if($('#'+LatBox).val()=='' || $('#'+LngBox).val()==''){
        //alert("Cannot continue unless the Lat Lng has a vallid coordinate");
        if($('#LatLngError').length==0){
            errorHTML='<br><span class="ms-error" id="LatLngError">You must specify a value for Lat and Lng</span>'
            $('#'+AddressBox).closest('TD').append(errorHTML)

        }
        return -1
    }
    return 0
};

这很乱,但希望你能理解它。

编辑2:

我认为我已经跟踪了随机性......我完全关闭了所有自定义代码,但仍然存在问题。然后我尝试将工作记录与非工作记录进行比较。一切都看起来很正常,直到我带着一个多人选择器到达现场。如果我在该字段中有超过2个人,它将保存正常,但是当我在人员选择器字段中超过2个人对该记录进行修改时会导致此问题。我将做更多的研究,并将发布我的结果。

编辑3:

http://blogs.msdn.com/b/jorman/archive/2009/12/22/mystery-of-the-sharepoint-white-screens.aspx

这个问题都归结为IIS配置和模拟级别。显然我们的服务器管理员决定在不告诉任何人的情况下进行更改。

2 个答案:

答案 0 :(得分:0)

通常,当您从网页(特别是在MOSS中)获得[看似随机]行为时,这意味着您在页面上定义了模糊事件。通常,当我向按钮或表单on_submit添加某种JScript时,我会得到这个 在没有看到你的代码的情况下,我无法真正缩小范围。我建议:在HTML表单或按钮单击事件上查找JavaScript事件,或者查找指向无处的锚[a]标记(href =#)但是有javascript。然后决定(严格地)HTML方式(表单,提交按钮)或javascript方式(没有表单,没有asp:按钮)和取消另一个连接。

答案 1 :(得分:0)

这个问题都归结为IIS配置和模拟级别。显然我们的服务器管理员决定在不告诉任何人的情况下进行更改。

http://blogs.msdn.com/b/jorman/archive/2009/12/22/mystery-of-the-sharepoint-white-screens.aspx