我正在尝试将我通过JSON接收的实例ID插入到表单输入中。
function assignCategoryValue()
{
var userInput = $("#input_transaction_category").val();
var formOptions = document.getElementById("id_transaction_category").options;
for(var i=1;i<formOptions.length;i++)
{
if(formOptions[i].text == userInput)
{
// This works.
$("#id_transaction_category").val(formOptions[i].value);
console.log(formOptions[i].value);
return false;
}
}
alert("Doesn't exist, creating.");
$.ajaxSetup({async: false});
var postdata = { 'csrfmiddlewaretoken': '{{ csrf_token }}' }
$.post("create_category/"+userInput+'/', postdata, function( data ){
for(var key in data)
if (data.hasOwnProperty(key))
var foo = data[key];
// The console prints out the value I want.
console.log(foo);
$("#id_transaction_category").val(foo);
// Yet after I set the value, the console prints a blank line.
console.log($("#id_transaction_category").val());
return false;
});
}
根据控制台,JSON具有我想要的值,但是我将它插入到我的表单中时遇到了麻烦。
$ .post发送的JSON是这样的:
data = json.dumps({"category_id" : category_id})
print data
{"category_id": 178} // from server console
$ .post收到的JSON是这样的:
$.post("create_category/"+userInput+'/', postdata, function( data ){
console.log(data);
Object {category_id: 180} // From crhome console
var foo = data[key];
console.log(foo);
180 // From chrome console
我想填写的输入:
<select id="id_transaction_category" name="transaction_category">
<option value="" selected="selected">---------</option>
<option value="1">Travel</option>
<option value="2">New</option>
<option value="3">test</option>
.
.
.
<option value="191">nfaha</option>
</select>
答案 0 :(得分:0)
导致此类问题的一些原因:
#id_transaction_category
元素。.val()
设置表单元素的值,例如输入。确保使用#id_transaction_category
选择器指向的元素。data[key]