0

这是我的控制器类:

global class MyJSController {
    public static String objj { get; set; }

    @RemoteAction
    public static String getObject_name(){
        return objj;
    }
    @RemoteAction
    public static void setObject_name(String s){
        objj=s;
    }

    public String accountName { get; set; }

    public static Account account { get; set; }

    public static List<Order__c> order{get;set;}

    public static List<Units__C>unit{get;set;}

    public static List<Widget__c> widget{get;set;}

    public MyJSController() { 
         setObject_name('Order');
    } // empty constructor


    @RemoteAction
    global static Account getAccount(String accountName) {
        account = [SELECT id, name, phone, type, numberofemployees
                   FROM Account WHERE name = :accountName];
        return account;
    }


    @RemoteAction
    global static Order__c[] getOrder(){
        return ([SELECT id,Name,Date__c,Inbound_Orders__c,Outbound_Orders__c from Order__c]);
    }

    @RemoteAction
    global static List<Units__c> getUnits(){
        unit=[SELECT id,Name,Date__c,Inbound_Units__c,Outbound_Units__c from Units__c];
        return unit;
    }

    @RemoteAction
    global static List<Widget__c> getWidget(){
        widget=[SELECT id,Name,Date__c,Inbound_Widgets__c,Outbound_Widgets__c from Widget__c];
        return widget;
    }
}

这是我的visualforce页面:

<apex:page controller="MyJSController">
<apex:form >
<apex:selectList id="chooseColor" value="{!object_name}" size="1" onchange="initCharts()" >
<apex:selectOption itemValue="Order" itemLabel="Order"/>
<apex:selectOption itemValue="Unit" itemLabel="Unit"/>
<apex:selectOption itemValue="Widget" itemLabel="Widget"/>
</apex:selectList>
</apex:form>
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<script type="text/javascript">



        // Load the Visualization API and the piechart package.
        google.load('visualization', '1.0', {'packages':['corechart']});

        // Set a callback to run when the Google Visualization API is loaded.
        google.setOnLoadCallback(initCharts);

        function initCharts() {        
          // Following the usual Remoting syntax
          // [<namespace>.]<controller>.<method>([params...,] <callbackFunction>(result, event) {...}
          // namespace : abhinav
          // controller : GoogleChartsController
          // method : loadOpps



          MyJSController.getOrder(
                 function(result, event){ 
                     // load Column chart
                    var data = new google.visualization.DataTable();
        data.addColumn('string', 'Topping');
        data.addColumn('number', 'Slices');

         for(var i =0; i<result.length;i++){
                        var r = result[i];
                        data.addRow([r.Name,r.Inbound_Orders__c]); 
      }
      var data1=new google.visualization.DataTable();
      data1.addColumn('string','Topping');
      data1.addColumn('number','Slices');
      for(var i=0;i<result.length;i++)
      {
      var r=result[i];
      data1.addRow([r.Name,r.Inbound_Orders__c]);

      }

        // Set chart options
        var options = {'title':'How Much Pizza I Ate Last Night',
                       'width':400,
                       'height':300};

        // Instantiate and draw our chart, passing in some options.
        var chart = new google.visualization.AreaChart(document.getElementById('chart_div'));
        var chart1= new google.visualization.AreaChart(document.getElementById('chart_hh'));
        chart.draw(data, options);
        chart1.draw(data1,options);   }, {escape:true});


          MyJSController.getObject_name(function(event,result){
         alert('Hello'+result);
        document.getElementById('dddd').innerHTML=String.ValueOf(result);  },{escape:true});


          }


</script>
<div id="chart_div" ></div>
<div id="chart_hh"></div>
<div id="dddd">Helloojjfs</div>
</apex:page>

当我调用MyJSController.getObject_name脚本标签(脚本标签中的最后第四行)时,我得到[Object Object]. 但是我需要String Order在构造函数中初始化它。你能告诉我我错在哪里并纠正这个错误吗?

4

1 回答 1

0

I believe the issue is that your argument names are backwards. It should be:

MyJSController.getObject_name(function(result, event)

So the alert you are getting of an object is actually the event object.

于 2012-06-22T16:32:44.787 回答