来自Json Return的JQuery更新选项

时间:2016-04-14 13:32:05

标签: javascript jquery json

所以我有这个HTML表单:

git

我有这个jQuery

xclip

我从json帖子获得以下回复

$ git log -1 --pretty=%B | xsel -i -b

所以帖子和回调工作正常,因为这些记录在控制台中,我需要能够接受被叫回来制作数据[“make”]并更新选择表单中的选定选项。

你可以看到我尝试了很多不同的选项,甚至在代码中输入“Ford”,但我似乎总是在控制台中收到以下错误:

<select name="finder[4]" id="finder-2--4" class="pffield pf-make">
   <option value="0">Please Select...</option>
   <option value="52505">Alfa Romeo</option>
   <option value="52506">Audi</option>
   <option value="52499">BMW</option>
   <option value="52501">Ford</option>
</select>

对于我的生活,我现在无法让这个工作。

4 个答案:

答案 0 :(得分:1)

而不是$使用jQuery,而是使用而不是data["make"]data.make

答案 1 :(得分:1)

使用contains获取选项值,然后设置选择: -

&#13;
&#13;
var ford = $('.pf-make option:contains("Ford")').val();

$('.pf-make').val(ford);
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select name="finder[4]" id="finder-2--4" class="pffield pf-make">
   <option value="0">Please Select...</option>
   <option value="52505">Alfa Romeo</option>
   <option value="52506">Audi</option>
   <option value="52499">BMW</option>
   <option value="52501">Ford</option>
</select>
&#13;
&#13;
&#13;

答案 2 :(得分:1)

一个简单的解决方案是遍历选项以查找匹配的文本,然后访问其值。

var $select = jQuery('.pf-make');
var value = 0;
$select.find('option').each(function(){
    if(jQuery(this).text() == data.make){
        value = jQuery(this).val();
        return false;
    }
});
$select.val(value);

答案 3 :(得分:0)

查看此更新的代码。请注意,它使用 ID 而不是类名来使其更具体

<script type="text/javascript">
    jQuery("document").ready(function(){
        //console.log('on load');
    jQuery(".js-ajax-php-json").submit(function(){
        //console.log('post');
    var data = {
    "action": "test"
    };
    data = jQuery(this).serialize() + "&" + jQuery.param(data);
    jQuery.ajax({
    type: "POST",
    dataType: "json",
    url: "/reglookup.php", //Relative or absolute path to response.php file
    data: data,
        success: function(data) {
            jQuery("#finder-2--4").val(data.make);
        }
    });
    return false;
    });
    });
</script>