Jquery ATK4-根据相关下拉列表中的更改更新表单字段值

Jquery ATK4-根据相关下拉列表中的更改更新表单字段值,jquery,forms,atk4,Jquery,Forms,Atk4,每当相关下拉列表发生变化时,我试图用数据库中的某个值填充表单字段,我不明白为什么: 我可以成功地使用下拉列表中的js()->val()来设置我试图填充的字段的val()($price) 但是,每当我在查询中使用js()->val()时,或者在我为排除故障而添加的警报中,它都会输出附加了“.val()”或类似内容的字段名引用字符串 我知道这是一个noob问题,但我已经从几个方面考虑了这个问题,并尝试了不同的方法,但我无法让它发挥作用。 如果我在下面的查询中为“id”硬编码一个值,它确实可以按预

每当相关下拉列表发生变化时,我试图用数据库中的某个值填充表单字段,我不明白为什么:

  • 我可以成功地使用下拉列表中的js()->val()来设置我试图填充的字段的val()($price)
  • 但是,每当我在查询中使用js()->val()时,或者在我为排除故障而添加的警报中,它都会输出附加了“.val()”或类似内容的字段名引用字符串
我知道这是一个noob问题,但我已经从几个方面考虑了这个问题,并尝试了不同的方法,但我无法让它发挥作用。 如果我在下面的查询中为“id”硬编码一个值,它确实可以按预期工作,我只需要能够将适当的值传递给查询

$form = $this->add('Form');
$product = $form->addField('dropdown', 'name');
$product->setModel('Product');
$price = $form->addField('line', 'price_per');
$product->js('change', $price->js()
    ->val($product->js()->val())
    ->univ()
    ->alert('ID is : ' . $product->js()->val()));   

// $product->js('change', $price->js()->val(
    // $this->api->db->dsql() //->expr(2+2)
    // ->debug()
    // ->table('product')
    // ->field('price_per')
    // ->where('id',$product->js()->val())
    // ->getOne()
    // ));
你的问题是:

->alert('ID is : ' . $product->js()->val()));  
您必须记住,js()生成一个PHP链,然后可以将其转换为javascript。如果将其与字符串连接,则它将成为一个字符串,从而发出警报。试试这个:

->alert($product->js()->val()));  
它应该很好用

您可以通过必要的连接在UNIV链中添加方法。您也可以使用js(null,'2+4')来注入任何javascript代码,但要小心,因为它不会被转义

AJAX

当javascript依赖于服务器端算法时,这是一种技术。JavaScript将请求发送到后端。敏捷工具包使用了一种称为AJAXEC(Ajax+Exec)的技术。它将向服务器发送请求,但服务器将用javascript块进行响应,以便执行(因此使用->execute()方法)

使用Agile Toolkit包装此功能有几种方法,但您可能应该首先了解基本知识:


好的:如果我删除了警报的“字符串”组件,换句话说,我将警报更改为:->alert($product->js()->val()),然后它输出我期望的ID。。。所以问题变成了,我如何将这个应用到查询?在链表中间使用->调试应该对你有帮助。还可以看看_include()是如何工作的。谢谢罗马人。好的,在这里阅读关于_include的文章:我理解它的用途以及它将如何帮助我,但是我不确定如何或在我当前的代码中使用它来达到目的。我可以看一些指导或文件来帮我弄明白吗?我还在这里把头撞在墙上,我只是想“教一个人钓鱼”,而不是仅仅把鱼递给他,但我现在肯定不介意被鱼打在脸上:)有人能帮我开始吗?对,我明白了,但是,在上面注释掉的代码部分,我一直在讨论如何将这一原则应用于我的dsql。您需要了解一些代码发生在服务器上,另一些代码发生在浏览器中,它们需要在逻辑上相互调用。我添加了一些帮助链接。