【发布时间】:2014-05-09 09:44:22
【问题描述】:
我正在尝试将我通过 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>
【问题讨论】:
-
请检查此 id "id_transaction_category" 是否与您的页面重复。
-
@MMK 我只有一次。
-
您确定您的 jQuery 选择器有效吗?使用
console.log($("#id_transaction_category").lenght)检查您的查询是否有结果。还要在此处发布包含此输入的代码的 HTML 部分。 -
#id_transaction_category是表单输入吗? -
@EliasSoares 我想是的。如果模型的实例尚不存在,则调用 create 方法。这是在创建发生之前运行(并有效)的方法。 for(var i=1;i