如何将 id 值动态获取到 ajax 调用变量
How to get the id values dynamically to the ajax call variables
在下面的代码中,我将动态获取 id (id="drop")。
我需要这个 id 值到另一个自动搜索功能。
根据 id 必须从数据库中搜索类别..
<div class="search_dropdown">
<select name="category" id="drop">
<option value="">categories</option>
<?php
$resource = Mage::getSingleton('core/resource');
$writeConnection = $resource->getConnection('core_write');
$sql = "SELECT title, category_id FROM directory_categories";
$result = $writeConnection->fetchAll($sql);
$i = 1;
if (count($result) > 0) {
foreach ($result as $key => $row) {
$last = "";
if ($i % 4 == 0) {
$last = "last";
}
?>
<option
value="<?php echo $row['category_id']; ?>"><?php echo $row['title'] ?></option>
<?php $i++;
}
}
?>
</select>
</div>
我的脚本编码是
<script type="text/javascript">
$(document).ready(function () {
$('#drop').click(function (e) {
e.preventDefault();
var array = [];
$('select :selected').each(function (i, value) {
array[i] = $(this).val();
});
//here make your ajax call to a php file
$.ajax({
type: "GET",
url: "<?php echo $this->getBaseUrl();?>listings/search/autosearch",
data: {selected_values: array, otherVal: 'something else'}
});
});
});
</script>
在我的函数编码中是....我没有得到任何输出..它显示结果为 Null
public function autosearchAction()
{
$array = $_GET['selected_values'];
vardump($array);die();
foreach($array as $key => $value){
//do something with the key/value.
}
}
提前致谢
在您的脚本编码中,而不是
$('drop').click(function (e) {
使用
$('#drop').click(function (e) {
因为 drop
是 select 元素的 id,在 jQuery 中,如果我们将 id 用作 select 或者我们必须在它前面加上 #
并且您应该使用 ajax 的 success
方法来获得 ajax 响应,如下所示
$.ajax({
type: "GET",
url: "<?php echo $this->getBaseUrl();?>listings/search/autosearch",
data: {selected_value: $('#drop').val(), otherVal: 'something else'}
},
success: function(res) {
alert(res);
}
});
$('drop').click(function(){ ... })
在语法方面没有错误,但是它永远不会被执行,因为它假定有一个原生的 HTML 'drop'
控件,同样的方式有一个native 'body', 'table', 'div'
, or 'select'
, etc... 但是 DOM 中没有 'drop'
.. 'drop'
是你分配给一个 'select'
控制。
所以如果你想让你的代码工作,你必须告诉 jQuery 监听对 'select'
控件的点击,或者监听 ID 为 '#drop'
的控件并且您通过在 ID 之前添加 '#'
来明确这一点,表明它不是原生元素,而是元素的 ID。
$('#drop').click(function(){ ... })
在下面的代码中,我将动态获取 id (id="drop")。
我需要这个 id 值到另一个自动搜索功能。
根据 id 必须从数据库中搜索类别..
<div class="search_dropdown">
<select name="category" id="drop">
<option value="">categories</option>
<?php
$resource = Mage::getSingleton('core/resource');
$writeConnection = $resource->getConnection('core_write');
$sql = "SELECT title, category_id FROM directory_categories";
$result = $writeConnection->fetchAll($sql);
$i = 1;
if (count($result) > 0) {
foreach ($result as $key => $row) {
$last = "";
if ($i % 4 == 0) {
$last = "last";
}
?>
<option
value="<?php echo $row['category_id']; ?>"><?php echo $row['title'] ?></option>
<?php $i++;
}
}
?>
</select>
</div>
我的脚本编码是
<script type="text/javascript">
$(document).ready(function () {
$('#drop').click(function (e) {
e.preventDefault();
var array = [];
$('select :selected').each(function (i, value) {
array[i] = $(this).val();
});
//here make your ajax call to a php file
$.ajax({
type: "GET",
url: "<?php echo $this->getBaseUrl();?>listings/search/autosearch",
data: {selected_values: array, otherVal: 'something else'}
});
});
});
</script>
在我的函数编码中是....我没有得到任何输出..它显示结果为 Null
public function autosearchAction()
{
$array = $_GET['selected_values'];
vardump($array);die();
foreach($array as $key => $value){
//do something with the key/value.
}
}
提前致谢
在您的脚本编码中,而不是
$('drop').click(function (e) {
使用
$('#drop').click(function (e) {
因为 drop
是 select 元素的 id,在 jQuery 中,如果我们将 id 用作 select 或者我们必须在它前面加上 #
并且您应该使用 ajax 的 success
方法来获得 ajax 响应,如下所示
$.ajax({
type: "GET",
url: "<?php echo $this->getBaseUrl();?>listings/search/autosearch",
data: {selected_value: $('#drop').val(), otherVal: 'something else'}
},
success: function(res) {
alert(res);
}
});
$('drop').click(function(){ ... })
在语法方面没有错误,但是它永远不会被执行,因为它假定有一个原生的 HTML 'drop'
控件,同样的方式有一个native 'body', 'table', 'div'
, or 'select'
, etc... 但是 DOM 中没有 'drop'
.. 'drop'
是你分配给一个 'select'
控制。
所以如果你想让你的代码工作,你必须告诉 jQuery 监听对 'select'
控件的点击,或者监听 ID 为 '#drop'
的控件并且您通过在 ID 之前添加 '#'
来明确这一点,表明它不是原生元素,而是元素的 ID。
$('#drop').click(function(){ ... })