Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ajax Grails Select RemoteFunction不工作?_Ajax_Grails_Select - Fatal编程技术网

Ajax Grails Select RemoteFunction不工作?

Ajax Grails Select RemoteFunction不工作?,ajax,grails,select,Ajax,Grails,Select,让我介绍一下背景情况 我有一个存储用户数据的域模型,我有一个单独的域模型来存储用户的电话号码,因为他们可以有多个1,所以一个用户可以有多个电话号码 我在系统中存储了一个用户的数据,并为该用户提供了2个电话号码。然后在一个页面上,我有一个选择列表,该列表用于调用控制器上的操作,然后将用户的电话号码数据传递回要呈现的视图 每个元素的代码如下所示: 控制器功能: def getNumbers = { def user = User.get(params.phoneId.toInteg

让我介绍一下背景情况

我有一个存储用户数据的域模型,我有一个单独的域模型来存储用户的电话号码,因为他们可以有多个1,所以一个用户可以有多个电话号码

我在系统中存储了一个用户的数据,并为该用户提供了2个电话号码。然后在一个页面上,我有一个选择列表,该列表用于调用控制器上的操作,然后将用户的电话号码数据传递回要呈现的视图

每个元素的代码如下所示:

控制器功能:

def getNumbers = {

        def user = User.get(params.phoneId.toInteger())

        [phones: user.phones]
    }
<g:select id="users" name="user_field" from="${Users}" 
                optionKey="id" 
                optionValue="name" 
                noSelection="['':'-Choose a Name-']"
                onchange="${remoteFunction(action: 'getNumbers',
                                 update: [success: 'great', failure: 'ohno'],
                                 params: [userId: this.value ],
                                 options: '[asynchronous: false]')}" />


<g:each in="${phones?}" var="a" status="i">
                <div>

                 <g:textField name="number" required="" value="${phones?.data}"/>

                </div>
            </g:each>
视图:

def getNumbers = {

        def user = User.get(params.phoneId.toInteger())

        [phones: user.phones]
    }
<g:select id="users" name="user_field" from="${Users}" 
                optionKey="id" 
                optionValue="name" 
                noSelection="['':'-Choose a Name-']"
                onchange="${remoteFunction(action: 'getNumbers',
                                 update: [success: 'great', failure: 'ohno'],
                                 params: [userId: this.value ],
                                 options: '[asynchronous: false]')}" />


<g:each in="${phones?}" var="a" status="i">
                <div>

                 <g:textField name="number" required="" value="${phones?.data}"/>

                </div>
            </g:each>
奇怪的是,传递的参数将为null,因为我已经通过下面的JavaScript将此列表中的数据显示在页面上的文本框中,并且该值不为null且显示正确:

document.getElementById("verification").innerHTML = "<br />" + this.value;
document.getElementById(“验证”).innerHTML=“
”+this.value;
我希望有人能帮助我纠正这个问题,甚至告诉我另一种方法来实现我想要的

提前感谢。

尝试以下步骤:

1-创建模板:_phones.gsp

<g:each in="${phones?}" var="a" status="i">
   <option value="${phones?.data}">${phones?.data}</option>
</g:each>

很抱歉我的英语不好;-)

请尝试
params:'\'userId=\'+this.value',
支持上述内容,查看详细信息。我现在需要在选择框下方呈现一个新模板,其中电话号码数据显示在字段中,您知道如何实现吗?再次查看。让grails.org成为你的圣经。:)
<select id="great">
</select>
    // You get the phones by User.id, i thik so :-) 'users' is a first select and contains the id selected, and provide the find in phones.
    def user = User.get(params.users.toInteger())

    [phones: user.phones]
}