Jquery XPAGES在使用$.ajax时不会保存现有文档
我在XPAGES上尝试了select2插件。对于新文档,它工作正常,但对于现有文档,它无法保存。我发现这个问题的根源是“XPAGES在使用$.ajax和XAgent时不会保存现有文档” 下面是我的简单示例(test.xsp):`Jquery XPAGES在使用$.ajax时不会保存现有文档,jquery,ajax,xpages,Jquery,Ajax,Xpages,我在XPAGES上尝试了select2插件。对于新文档,它工作正常,但对于现有文档,它无法保存。我发现这个问题的根源是“XPAGES在使用$.ajax和XAgent时不会保存现有文档” 下面是我的简单示例(test.xsp):` 和XAgent(example.xsp) 当我打开url“server/database.nsf/test.xsp”时。TxtNama将从example.xsp获得值:“ajax测试”,我将其保存。。新文档可以毫无问题地保存 但是,当我打开保存的文档url=“s
和XAgent(example.xsp)
当我打开url“server/database.nsf/test.xsp”时。TxtNama将从example.xsp获得值:“ajax测试”,我将其保存。。新文档可以毫无问题地保存
但是,当我打开保存的文档url=“server/database.nsf/test.xsp?documentId=xxxxxxxxxxxxx”时。然后填充txtalmat值并保存它。无法保存txtAlamat中的任何更改
但如果我设置xp:scriptBlock rendered=“false”并再次尝试填充txtalmat值,则txtalmat的更改将被保存
这很奇怪 有两件事:
- 检查是否允许您编辑文档并保存更改。可能是您没有足够的权限更新它
- 我测试了您的场景:opened test.xsp,创建了一个文档,opened test.xsp?documentId=xxx,对字段进行了更改,并成功地更新了文档。请注意,如果随后再次打开test.xsp?documentId=xxx,则会显示更新后的值。但是,如果单击Edit按钮,XPage将处于编辑模式,并且输入的值将更改回“ajax测试”,因为ajax调用将再次启动。您可能希望更改代码,以便只对新文档执行ajax调用。如果要确保保存更改,请使用Notes客户端查看文档
<xp:view xmlns:xp="http://www.ibm.com/xsp/core"
xmlns:xc="http://www.ibm.com/xsp/custom"
xmlns:xp_1="http://www.ibm.com/xsp/coreex">
<xp:this.data>
<xp:dominoDocument var="document1" formName="Employee"
action="openDocument" computeWithForm="both">
</xp:dominoDocument>
</xp:this.data>
<xc:coreHeader theme="blue"></xc:coreHeader>
<xp:button value="Save" id="button1">
<xp:eventHandler event="onclick" submit="true" refreshMode="complete">
<xp:this.action>
<![CDATA[#{javascript:currentDocument.save();context.redirectToPage("grid.xsp");}]]>
</xp:this.action>
</xp:eventHandler>
</xp:button>
<xp:button id="button2" rendered="#{javascript:!currentDocument.isEditable()}" value="Edit">
<xp:eventHandler event="onclick" submit="true" refreshMode="complete">
<xp:this.action>
<xp:changeDocumentMode mode="toggle" var="document1"></xp:changeDocumentMode>
</xp:this.action>
</xp:eventHandler>
</xp:button>
<xp:label for="forteInputText" styleClass="control-label" value="Label"></xp:label>
<xp:div styleClass="controls" >
<xp:inputText id="txtNama" value="#{document1.Nama}"></xp:inputText>
<xp:inputText id="txtAlamat" value="#{document1.Alamat}"></xp:inputText>
</xp:div>
<xp:scriptBlock rendered="true">
<xp:this.value><![CDATA[// DECLARATION
dojo.ready(function(){
$.ajax({
url:'example.xsp'
}).done(function(data){
x$('#{id:txtNama}').val(data);
})
})]]></xp:this.value>
</xp:scriptBlock>
<xc:coreFooter></xc:coreFooter>
</xp:view>
<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core" rendered="false">
<xp:this.afterRenderResponse><![CDATA[#{javascript:
try{
var externalContext = facesContext.getExternalContext();
var writer = facesContext.getResponseWriter();
var result = "ajax testing";
writer.write(result);
writer.endDocument();
} catch(e){
_dump(e);
}
}]]></xp:this.afterRenderResponse>
</xp:view>