我有一个页面,其表单的文件上传输入项目是针对隐藏的iframe。当表单发布到iframe时,服务器处理该文件并返回一个json对象。我不知道如何使用jquery或普通的旧javascript来监听返回的对象。我为我的iframe设置了一些代码,例如......
$("#upload_target").load(function () {
//what to do here - how do I get the json object?
});
有没有人知道如何连接jquery来监听发送回iframe的json对象?感谢。
答案 0 :(得分:5)
我终于想出了怎么做......
$("#upload_target").load(function (data) {
if (data != null){
var obj = jQuery.parseJSON(data);
//...work with obj here.
}
});
无论是否正确,它都有效。
编辑 - 实际上我有点领先于自己。这是正确的代码......
$("#upload_target").load(function (){
var retval = $(frames['upload_target'].document).text();
if (retval != null)
{
try{
var obj = jQuery.parseJSON(retval);
//...work with obj here.
}catch(err){}
}
});
我必须改变的一件事是确保我的MVC控制器操作设置了JSONResult.ContentType =“text / plain”。否则我得到一个保存下载对话框。
答案 1 :(得分:4)
您不应将.load()
用于此类请求。它将响应插入到选定的元素中。在谈论对象时,这肯定不是你想要的。试试$.getJSON()
(或$.post()
json
为dataType
):
// $.getJSON uses HTTP GET
$.getJSON('http://example.com/ajax', function (data) {
// data is an object
});
// the same with $.post for POST requests
$.post('http://example.com/ajax', function (data) {
// data is an object
}, 'json');
答案 2 :(得分:0)