Javascript / SOAP错误调用Salesforce Apex Web服务方法

时间:2014-07-10 14:48:16

标签: javascript soap salesforce apex

希望有人可以了解我的一些用户在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,但她收到错误而我不是。此外,无论她是否在兼容性视图中,都会发生错误。 (我知道,这只会影响渲染,但我看到过更奇怪的东西。)

1 个答案:

答案 0 :(得分:0)

我怀疑在copyQuoteFromOpty Web服务中发生了异常,并且正由try catch块处理。因此,newQuoteId在返回时为空。

注释try和catch以查看实际错误是什么。