Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.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
Javascript 在select2中使用ajax时无法获取自定义属性值_Javascript_Asp.net_Ajax_Asp.net Ajax_Jquery Select2 - Fatal编程技术网

Javascript 在select2中使用ajax时无法获取自定义属性值

Javascript 在select2中使用ajax时无法获取自定义属性值,javascript,asp.net,ajax,asp.net-ajax,jquery-select2,Javascript,Asp.net,Ajax,Asp.net Ajax,Jquery Select2,我正在使用ASP.NET 我有一个使用select2的下拉列表,当选择某个对象时,使用ajax调用带有两个参数的(apicontroller)操作 行动: public class MyController: ApiController { [HttpGet] public string Helper(string para0, string para1, string para2) { return something;} } html: <select id="sel

我正在使用ASP.NET

我有一个使用select2的下拉列表,当选择某个对象时,使用ajax调用带有两个参数的(apicontroller)操作

行动:

public class MyController: ApiController
{
    [HttpGet]
    public string Helper(string para0, string para1, string para2) { return something;}
}
html:

<select id="selectCase">
    <option>Select a Case</option>
    <option value="abc" data-para1="1" data-para2="2"> "abc" </option>
    <option value="def" data-para1="1" data-para2="2"> "abc" </option>
</select>
但是当它运行时,只有$(this).val()获得正确的值,$(this).attr(“data-para1”和$(this).attr(“data-para1”)都未定义。我们也尝试使用$(this).data(“para1”),但仍然无法工作

谢谢


实际上,我跳过了在html中使用optgroup的部分,不确定这是否有什么不同

<select id="selectCase">
    <option></option>
    <optgroup label="0">
        <option value="abc" data-para1="1" data-para2="2"> "abc" </option>
    </optgroup>
    <optgroup label="0">
        <option value="def" data-para1="1" data-para2="2"> "abc" </option>
    </optgroup>
</select>

“abc”
“abc”
您可以使用
$(this)。查找('option:selected')
以获取所选选项,然后获取在每个选项中定义的自定义属性

演示代码

$('selectCase')。选择2({
宽度:“100%”,
占位符:“选择一个选项”,
allowClear:对
});
$('#selectCase')。在('select2:select',function()上{
//获取所选选项,然后检索所需数据
var$select=$(this.find('option:selected');
console.log(“para0=“+$select.val()+”¶1=“+$select.attr('data-para1')+”¶2=“+$select.attr('data-para2'));
});

“abc”
“abc”
您可以使用
$(this)。查找('option:selected')
以获取所选选项,然后获取在每个选项中定义的自定义属性

演示代码

$('selectCase')。选择2({
宽度:“100%”,
占位符:“选择一个选项”,
allowClear:对
});
$('#selectCase')。在('select2:select',function()上{
//获取所选选项,然后检索所需数据
var$select=$(this.find('option:selected');
console.log(“para0=“+$select.val()+”¶1=“+$select.attr('data-para1')+”¶2=“+$select.attr('data-para2'));
});

“abc”
“abc”

谢谢你的帮助!!!虽然我还没有定义…但我想知道这是否是因为我使用的是我在原始问题陈述中跳过的optgroup,我已经更新了它,并尝试使用$(this).children('optgroup:selected').children('option:selected').attr(“data-para1”)再一次,它不起作用了…我已经更新了我的答案,您可以使用
$(this.find('option:selected'))
,检查是否有效谢谢你的帮助!!!虽然我还没有定义…但我想知道这是否是因为我使用的是我在原始问题陈述中跳过的optgroup,我已经更新了它,并且还尝试了$(this).children('optgroup:selected').children('option:selected').attr(“data-para1”)我已经更新了我的答案,你可以使用
$(这个)。查找('option:selected')
,检查是否有效
<select id="selectCase">
    <option></option>
    <optgroup label="0">
        <option value="abc" data-para1="1" data-para2="2"> "abc" </option>
    </optgroup>
    <optgroup label="0">
        <option value="def" data-para1="1" data-para2="2"> "abc" </option>
    </optgroup>
</select>