希望有人可以了解我的一些用户在Salesforce中看到的一个令人讨厌的错误。我们有一个自定义按钮,可以调用包含对Apex Web服务的javascript调用的VF页面。一个特定的调用失败并显示错误消息:
faultcode:'soapenv:Client',faultstring:'元素的内容必须包含格式良好的字符数据或标记'
以下是进行调用的javascript方法:
function copyQPP(quoteResult)
{
var qRecords = new sforce.QueryResultIterator(quoteResult);
if(qRecords.hasNext())
{
$('#StatusMessage').html(' Copying Quotes and Products...');
var qRecord = qRecords.next();
var state = {qRecords : qRecords};
var callback = {onSuccess: copyQPPs, onFailure: optyFailure, source: state};
sforce.apex.execute('OpportunityCopyRenewalService2','copyQuoteFromOpty', {copyType:"COPY", NewOptyId:newOpp ,QuoteId:qRecord.Id}, callback);
}
else
{
updateProducts('');
}
}
以下是调用的Apex webservice方法:
webservice static Id copyQuoteFromOpty(String CopyType,Id NewOptyId,Id QuoteId ) {
Id newQuoteId;
try {
newQuoteId=copyRenewQuote(CopyType,NewOptyId,QuoteId, true);
Id[] PPs=new List<Id>();
for (Proposed_Product__c aPP : [Select Id from Proposed_Product__c where Quote__c=:QuoteId Limit 1000] ) {
PPs.add(aPP.Id);
}
List<Id> PPreturn = copyRenewPPs(CopyType,newQuoteId,NewOptyId,PPs);
}
catch (Exception e){
system.debug(e);
}
System.Debug('****************************************************Exiting copyQuoteFromOpty. Returning Quote ID: ' + newQuoteId);
return newQuoteId;
}
从回调定义中可以看出,我期待控制继续进行copyQPPs功能。相反,当服务方法完成 - 并且它成功完成时,DML不会抛出任何异常 - 控制转到optyFailure函数。
这只发生在一部分用户身上。我正在使用的QA分析师正在使用与我正在使用的IE完全相同的版本:v9.0.8112.16421,但她收到错误而我不是。此外,无论她是否在兼容性视图中,都会发生错误。 (我知道,这只会影响渲染,但我看到过更奇怪的东西。)
答案 0 :(得分:0)
我怀疑在copyQuoteFromOpty
Web服务中发生了异常,并且正由try catch块处理。因此,newQuoteId
在返回时为空。
注释try和catch以查看实际错误是什么。