2012-01-25 32 views
0

这种方法基本上打开一个新的网页,在新窗口中的网址进来e.result参数,在这里我想打开新窗口中的新窗口中相同的窗口。jQuery的 - 打开链接在新标签表格提交

 $("#formMain").attr("action", e.result); 
     $("#formMain").attr("method", "post");  
     $("#formMain").attr('target', '_blank'); 
     $("#formMain").submit(); 

任何建议,将不胜感激

回答

2

不幸的是,你不能设置从JavaScript这个属性。它是浏览器根据其设置决定是否在新窗口或新选项卡中打开链接。

+0

我不相信这是不幸的,但你说的很对。 –

1

一般而言,将表单提交给用户将看到的页面是不明智的,因为它可能导致多个提交(如果用户前进/后退,他们重新打开标签等)。由于您已经在使用jQuery,请改用$ .post()或$ .get()。 (见http://api.jquery.com/jQuery.post/http://api.jquery.com/jQuery.get/)。位于e.result的脚本应该简单地处理表单提交(可能将内容保存到数据库)并返回结果。然后用户会看到一个基于该结果的单独页面。

所以,你的代码看起来是这样的:

$("#formMain").submit(function() { 
    return false; 
}); 

function submitForm(url) 
    $.post(url, $("#formMain").serialize(), function(result) { 
     window.open('resultPageURL&result='+encodeURIComponent(result), '_blank'); 
    }); 
} 

submitForm(e.result); 

显然结果的格式是由你 - 你可以很容易地返回一个JSON对象或结果页面,如果你想要的网址,使用:

try { 
    var obj = $.parseJSON(result); 
    window.open('resultPageURL&'+JSON.stringify(obj), '_blank'); 
} catch (e) { 
    alert('Not a valid JSON result'); 
} 

window.open(result, '_blank'); 
相关问题