Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/445.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript表单submital在webkit中工作,在其他地方失败_Javascript_Firefox_Forms_Post - Fatal编程技术网

Javascript表单submital在webkit中工作,在其他地方失败

Javascript表单submital在webkit中工作,在其他地方失败,javascript,firefox,forms,post,Javascript,Firefox,Forms,Post,我编写这段代码是为了尝试将url作为post值发送到同一页面。该代码在chrome和safari中运行良好。。。但是在FF3和IE中失败了(最后一个我不太关心,但我需要它在firefox中工作)。在FF3和IE中,它会打开一个空白的新选项卡。关于webkit和其他浏览器通过javascript处理表单提交的方式之间的差异,我应该知道什么 我使用的代码是: function posturl (url) { var myForm = document.createElement("f

我编写这段代码是为了尝试将url作为post值发送到同一页面。该代码在chrome和safari中运行良好。。。但是在FF3和IE中失败了(最后一个我不太关心,但我需要它在firefox中工作)。在FF3和IE中,它会打开一个空白的新选项卡。关于webkit和其他浏览器通过javascript处理表单提交的方式之间的差异,我应该知道什么

我使用的代码是:

function posturl (url) {
        var myForm = document.createElement("form");
        myForm.method="post" ;
        var myInput = document.createElement("input") ;
        myInput.setAttribute("name", "url") ;
        myInput.setAttribute("value", url);
        myForm.appendChild(myInput);
        document.body.appendChild(myForm) ;
        myForm.submit();
        document.body.removeChild(myForm) ;
    }

编辑:也许我应该补充一点,它的工作方式是在我的锚定标记中使用脚本作为href。因此,当您单击链接时,它会将参数通过post传递到同一页面,并相应地更新内容。

这应该可以跨浏览器工作。但实际上,我认为您需要一个window.setTimeout,其值为0。发生的情况是,您试图在JavaScript有时间“呼吸”之前访问一个元素

尝试:


它适用于我的Firefox2和Chrome2。这是我的完整测试页面:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
    <script>
    function posturl (url) {
        var myForm = document.createElement("form");
        myForm.method="post";

        var myInput = document.createElement("input") ;
        myInput.setAttribute("name", "url") ;
        myInput.setAttribute("value", 'http://www.google.com');

        myForm.appendChild(myInput);
        document.body.appendChild(myForm);
        myForm.submit();
        document.body.removeChild(myForm);
    }
    </script>
</head>
<body>
<input type="button" value="posturl()" onclick="posturl()" />
</body>

函数姿势(url){
var myForm=document.createElement(“表单”);
myForm.method=“post”;
var myInput=document.createElement(“输入”);
setAttribute(“名称”、“url”);
myInput.setAttribute(“值”,”http://www.google.com');
appendChild(myInput);
document.body.appendChild(myForm);
myForm.submit();
document.body.removeChild(myForm);
}
一定有其他东西(可能与打开空白选项卡有关??WTF?)破坏了您的代码


为什么它在IE中不起作用。

我想你的意思是用该代码替换方法的最后两行?我试过了,但它甚至在webkit中也不起作用。也许我应该补充一点,它的工作方式是在我的锚标记中使用脚本作为href。因此,当您单击链接时,它会通过post将参数传递到同一页面,更新内容。谢谢。我最终解决了我的问题,将javascript函数调用从a href中更改为用onclick替换。这似乎起到了作用。我想问题不在于剧本:)@Jarsen:你会发现IE还是把它搞砸了。请参阅我发布的链接。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
    <script>
    function posturl (url) {
        var myForm = document.createElement("form");
        myForm.method="post";

        var myInput = document.createElement("input") ;
        myInput.setAttribute("name", "url") ;
        myInput.setAttribute("value", 'http://www.google.com');

        myForm.appendChild(myInput);
        document.body.appendChild(myForm);
        myForm.submit();
        document.body.removeChild(myForm);
    }
    </script>
</head>
<body>
<input type="button" value="posturl()" onclick="posturl()" />
</body>