Javascript 从另一个函数中的URL获取ID
我的问题很简单。。。参见代码: 我的自动完成:Javascript 从另一个函数中的URL获取ID,javascript,php,jquery,cakephp,Javascript,Php,Jquery,Cakephp,我的问题很简单。。。参见代码: 我的自动完成: $("#produto").autocomplete({ source: '/pedidoOnline/index.php/Pedidos/search/' + $('#codigo_fabricante').val(), minLength: 2, focus: function(event, ui) { $("#produto").val(ui.item.label); return fa
$("#produto").autocomplete({
source: '/pedidoOnline/index.php/Pedidos/search/' + $('#codigo_fabricante').val(),
minLength: 2,
focus: function(event, ui) {
$("#produto").val(ui.item.label);
return false;
},
select: function(event, ui) {
$('#procura_produto').val(ui.item.id);
preencherLinhaProduto(ui.item.id);
}
});
接收codigo_fabricante的其他功能:
我在控制器中的功能:
public function search() {
$this->autoRender = false;
// Consultando pelo que o usuário está digitando
$term = $this->request->query ['term'];
//This way isn't working, I tried ['pass'][0] either.
$fabricante = $this->request->params['pass'];
echo($fabricante);
$this->loadModel ( 'ProcuraProdutoPedOnline' );
$produtos = $this->ProcuraProdutoPedOnline->find ( 'all', array (
'limit' => 20,
'fields' => array (
'cd_cpl_tamanho',
'ds_produto'
),
'conditions' => array (
'cd_fabricante' => "$fabricante",
'ds_produto LIKE' => '%' . mb_strtoupper ( $term ) . '%'
)
));
我想在$fabricante接收的函数“search()”上获取+$('#codigo_fabricante').val()的值。。。我该怎么做 您需要将参数pass(您正在服务器端检索)作为查询字符串值发送到您在JS代码中调用的URL中:
'/pedidoOnline/index.php/Pedidos/search?pass=' + $('#codigo_fabricante').val()
JS
$("#produto").autocomplete({
source: '/pedidoOnline/index.php/Pedidos/search?pass=' + $('#codigo_fabricante').val(),
minLength: 2,
focus: function(event, ui) {
$("#produto").val(ui.item.label);
return false;
},
select: function(event, ui) {
$('#procura_produto').val(ui.item.id);
preencherLinhaProduto(ui.item.id);
}
});
像这样
这样修改自动完成,只需在搜索末尾添加/即可
$("#produto").autocomplete({
source: '/pedidoOnline/Pedidos/search/' + $('#codigo_fabricante').val(),
minLength: 2,
focus: function(event, ui) {
$("#produto").val(ui.item.label);
return false;
},
select: function(event, ui) {
$('#procura_produto').val(ui.item.id);
preencherLinhaProduto(ui.item.id);
}
});
这样做会将该值添加为url参数,而不是通过$\u GET
在被调用的方法中,它将作为参数提供。这是蛋糕的方式
public function search($term) {
//method code here, but $term is now accessible as a local variable
//to debug this to make sure its getting passed in, add the next line of code
debug($term);die;
}
接下来,将完整的URL路径放入浏览器栏,sou应该会得到您传递的值的输出。例如:
localhost/pedidoOnline/Pedidos/search/somestringhere
应该调试somestringhere的一个结果我尝试了这个,但不起作用。。。两个错误:警告(2):缺少PedidosController::search()的参数1[APP\Controller\PedidosController.php,第90行]注意(8):数组到字符串的转换[APP\Controller\PedidosController.php,第104行]你调用的URL不正确
pedidoOnline/index.php/Pedidos/search/
你调用的URL应该是pedidoOnline/Pedidos/search/myValueHere
格式的root/controller/method/paramater
为什么index.php在那里?看:GET localhost/pedidoOnline/index.php/Pedidos/search/?term=tenis我的代码是:source:'/pedidoOnline/index.php/Pedidos/search/'+$('#codigo_fabricante').val(),错误为:“NetworkError:500 Internal Server error-”您没有遵循约定,因此无法正确传递或访问控制器方法。请参阅我最后一篇关于url应该是什么以及如何访问参数的评论。还要阅读我遵循惯例的文档,这就是我使用index.php/…的原因。。。我还有其他类似的函数,但是得到一个带有$u请求['']的Ajax…我尝试了这种方法,得到了:“NetworkError:500内部服务器错误-”我猜pass=即将清空这看起来不像我知道的CakePHP。。。。你应该试试这个吗<代码>来源:'/pedidos/search'+$(''codigo_fabricante').val(),他可能有Configure::write('App.baseUrl',env('SCRIPT_NAME')代码>未注释。