我有一个允许用户更改数据库中的帐户信息的表单。提交时,表单调用Django视图,并提交给隐藏的iframe。该视图返回一个JSON对象。无法让jquery查看从Django视图返回的JSON对象
隐藏的iframe可以看到这个对象。在Chrome浏览器中,我可以看到我期望写入iframe的字段。
jQuery尝试访问这些数据时遇到了麻烦。 jQuery函数从不运行。控制台日志和警报从不触发。我需要能够从django视图返回的数据触发该函数。
这是我的模板文件中的jQuery块。
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js'>
$('#hiframe').ready(function(){
$.getJSON('{{url_root}}/userupdate/update/', function(data) {
var parseddata = $.parseJSON(data);
console.log(parseddata);
alert(parseddata.UserId);
});
});
</script>
这里是iframe和模板的形式:
<iframe name='hiddeniframe' id='hiframe' scrolling='no' frameborder='0' style='display:none'></iframe>
<form id="userUpdate" name="userUpdate" action="{{url_root}}/userupdate/update/" method="POST" target='hiddeniframe'>
最后,这是我从我的观点函数返回的字典:
json_data = {'UserId': user_name,
'FirstName': user_fname,
'LastName': user_lname,
'Status': user_status}
return HttpResponse(json.dumps(json_data), content_type='application/json')
编辑发布解决方案:
knbk给了我一些很好的建议,我可以使用它们来完成这项工作。我删除了HTML表单,并使用下面的代码从视图中发送和接收。
添加我的解决方案,以防其他人遇到同样的问题。
$.ajax({
url: "{{url_root}}/userupdate/update/",
type: 'POST',
dataType: 'json',
data: data,
success: function(dta){
jsonfromDB = dta[0];
if (jsonfromDB['ErrMsg'].length > 0) {
alert(jsonfromDB['ErrMsg'].join("\n"));
}
// This is true when we have updated the database.
if(jsonfromDB['UpdateStatus']) {
// Grab the User input
fname.val(jsonfromDB['FirstName']);
lname.val(jsonfromDB['LastName']);
stat.val(jsonfromDB['Status']);
// We want the user to know when success has happened.
alert('Your database update was sucessful.');
}
},
error: function(errdata){
jfDB = errdata[0];
if (jfDB['ErrMsg'].length > 0) {
alert(jfDB['ErrMsg'].join("\n"));
}
}
});
谢谢你的回复。 我不是新手编程,但我是网络编程新手。一位同事也指出了同样的
我不确定隐藏的iframe是什么点。你也没有说明实际问题是什么。
但是,看起来您的jQuery代码不在
<script>...</script>
标签内,这可能是问题所在。来源
2013-07-29 18:46:31
对不起。让我编辑它。 隐藏的iframe是因为我有几种形式(每个用户一个),我想用更改的内容更新页面。我提交给隐藏的iframe,然后使用jQuery来更新已更改的行。 我试图将问题归结为最基本的问题。 – yubus
我还添加了更多的解释,我需要帮助搞清楚。 – yubus