【问题标题】:Performing a POST in window.open()在 window.open() 中执行 POST
【发布时间】:2014-01-22 19:41:30
【问题描述】:

我正在尝试打开一个弹出窗口,我想在它打开时使用 post 方法发送数据。 谁能帮帮我。

我收到"Uncaught syntax error. Unexpected token }"

function MapIt(){    
    var ListIds = selected_Listings.join();
    if (navigator.appName == "Microsoft Internet Explorer") {
        var opts = "screenX=0,screenY=0,width=" + screen.width + ",height=" + screen.height;
    } else {
        var opts = "outerWidth=" + screen.availWidth + ",outerHeight=" + screen.availHeight + ",screenX=0,screenY=0";
    }    
    var urlStr = "http://www.dev.theabc.com/bingmaps/Map  ";     
    $('<form action=' + urlStr + ' ' + ' target="submission" onsubmit="window.open("", "Map",' + opts + ' "toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes");return true;" method="post"><input type="hidden" name="listid" value="' + ListIds + '"></form>').submit();
}

【问题讨论】:

  • 这可能会导致问题,onsubmit="window.open("",

标签: javascript jquery http-post


【解决方案1】:

在知道你并不是真的想要一个帖子之后。

<html>
 <head>
   <script type='text/javascript' src='http://code.jquery.com/jquery-1.8.3.js'></script>
   <script type='text/javascript'>
   $(function(){
     MapIt = function() {
       ListIds = '1234';//selected_Listings.join();
       if (navigator.appName == "Microsoft Internet Explorer") {
         var opts = "screenX=0,screenY=0,width=" + screen.width + ",height=" + screen.height;
       } else {
         var opts = "outerWidth=" + screen.availWidth + ",outerHeight=" + screen.availHeight + ",screenX=0,screenY=0";
       }
       $('#myHidden').val(ListIds);
       window.open('opener.html','Map', opts+',toolbar=no,location=no,directories=no,status=no,menubar=yes,scrollbars=yes,resizable=no');

     }
    });
   </script>
 </head>
 <body>
  <button id="run" onclick="MapIt()">run</button>
  <input type="hidden" id="myHidden">
 </body>
</html>

然后在你的 opener.html 中

<html>
 <head>
   <script type='text/javascript' src='http://code.jquery.com/jquery-1.8.3.js'></script>
   <script type='text/javascript'>
     $(function(){
        var listIds = window.opener.document.getElementById('myHidden').value;
    $('#valuesRead').text(listIds);
      });
   </script>
 </head>
 <body>
   <span id="valuesRead"></span>
 </body>
</html>

注意如果您在本地运行它,在某些浏览器 (Chrome for one) 中会出现安全异议

【讨论】:

  • 我花了这么多时间来解决你的问题......你会接受它作为答案吗?
  • 谢谢@pimboden。非常感谢您的帮助。
【解决方案2】:

实际上...您的语法格式错误 它应该是这样的

$('<form action="'+urlStr+' target="submission" onsubmit="window.open(\'http://www.google.com\',\'Map\',\''+opts+',toolbar=no,location=no,directories=no,status=no,menubar=yes,scrollbars=yes,resizable=no\');return true;" method="post"><input type="hidden" value="'+ListIds+'"></form>').submit();

您必须转义字符串中的 "... 哦,在 opts 之后缺少一个昏迷...

<html>
<head>
  <script type='text/javascript' src='http://code.jquery.com/jquery-1.8.3.js'></script>
  <script type='text/javascript'>
  $(function(){
   MapIt = function() {
     ListIds = '1234';//selected_Listings.join();
     if (navigator.appName == "Microsoft Internet Explorer") {
       var opts = "screenX=0,screenY=0,width=" + screen.width + ",height=" + screen.height;
    } else {
      var opts = "outerWidth=" + screen.availWidth + ",outerHeight=" + screen.availHeight + ",screenX=0,screenY=0";
    }

   var urlStr = "http://wwwd.dev.theabc.com/bingmaps/Map";
   $('<form action="'+urlStr+' target="submission" onsubmit="window.open(\'http://www.google.com\',\'Map\',\''+opts+',toolbar=no,location=no,directories=no,status=no,menubar=yes,scrollbars=yes,resizable=no\');return true;" method="post"><input type="hidden" value="'+ListIds+'"></form>').submit();
}
});
</script>
</head>
<body>
 <button id="run" onclick="MapIt()">run</button>
</body>
</html>

【讨论】:

  • 我不清楚你在说什么。你能举个例子吗?
  • 编辑答案并在 IE、Chrome 和 Firefox 上测试
  • 谢谢。我不得不删除操作,因为这会导致父页面上的回发。现在表单标签看起来像: $('
    ').submit(); --- 但问题是 POST 没有发生。 (我想发布 listid )
  • 其实它应该.. 但是获取帖子的是操作中的 url (wwwd.dev.theabc.com/bingmaps/Map).. window.open 中的 Url 可以读取其父窗口的元素 ( window.opener)... 所以在google.com 页面中,它可以像 window.opener.forms[0].HiddenElementId... 一样读取它。但是为此,您的隐藏元素在此示例中必须有一个 Id,它丢失了.. .
  • 既然你不想要那个回发...为什么还要使用表单呢?你可以有一个按钮,使 window.open... 并在打开的窗口中读取输入元素窗体 window.opener... window.opener.getElementById('theID').value not a命名一个ID
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-26
  • 2012-08-13
相关资源
最近更新 更多