在grail,jquery中调用url调用中的参数

时间:2011-11-23 00:03:57

标签: jquery grails groovy

我是grails和JQuery的新手, 我在调用url时遇到了这个问题,目前使用这样的标签调用它:

$ {fieldValue(bean:userInstance,field:“employeeid”)}

单击此链接时,URL将更改为/ myapp / users / userEdit /“employeeid的值”。 为什么employeeId会像这样附加在URL中

在控制器中,userEdit动作定义如下:

 def userEdit={
            if(params.id!=null && params.id.toString().trim().length()>0){
                log.info("Returning UserInstance whose employee Id: "+params.id)
                def userInstance= Users.findByEmployeeid(params.id.toString().trim());
                if (params.fromdate!=null && params.todate!=null && params.resourceId!=null)  {   
render(view:"actEdit",model:[userInstance:userInstance,fdate:params.fromdate,tdate:params.todate,resId:params.resourceId])   
                  }
                else {render(view:"actEdit",model:[userInstance:userInstance]) }
         } }

基本上检查id的值并呈现页面。

现在我尝试使用jquery.ajax()这样调用来调用另一个页面的userEdit动作

function drillchart(empid){
var empid =empid
 jQuery.ajax({
               url: '/myapp/users/userEdit'+empid,
                data:{
               'fromdate':fromdate,
                'todate':todate,
                'resourceId':res_id
                },
                 dataType: 'html',
                 timeout: 10000,
     beforeSend: function() { jQuery('#userStatisticsDiv').html(/spinner.gif)},
     success: function(data) { window.location = myurl;}
                              });

问题是数据参数fromdate,todate,resourceId没有被传递,因此在动作中它总是进入else。

如果我没有直接在调用的url中传递empid,并把它作为'id':empid在调用的数据部分,它不会正确转发。

我需要知道如何调用相应的URL并传递调用中的所有参数

1 个答案:

答案 0 :(得分:0)

我有两条建议:

  1. 检查url参数连接中的结束斜杠。
  2. 不要在变量名中使用sigle冒号。
  3. 所以必须如下:

    jQuery.ajax({
       url: '/myapp/users/userEdit/'+empid,  //Check if the last slash is needed
       data:   {
                 fromdate:fromdate,
                 todate:todate,
                 resourceId:res_id
               },
       dataType: 'html',
       timeout: 10000,
       beforeSend: function() { jQuery('#userStatisticsDiv').html(/spinner.gif)},
       success: function(data) { window.location = myurl;}
    });