使用jquery动态包含javascript

使用jquery动态包含javascript,javascript,jquery,dynamic,include,Javascript,Jquery,Dynamic,Include,我在这里使用IE时遇到了一个问题。我需要在不同服务器和域中的不同网页上插入表单。我是通过javascript实现的,包括: <script type="text/javascript" src="http://www.sisgol.com.br/teste/write_js.php?content=form_content"></script> <div id="form_hypescience"> </div> include将以下内容加载

我在这里使用IE时遇到了一个问题。我需要在不同服务器和域中的不同网页上插入表单。我是通过javascript实现的,包括:

<script type="text/javascript" src="http://www.sisgol.com.br/teste/write_js.php?content=form_content"></script>
<div id="form_hypescience">
</div>

include将以下内容加载到div中:

$(document).ready(function(){
$('#form_hypescience').html('\
    <style>\n\
        #form_hypescience {\n\
            width: 250px;\n\
            height: 250px;\n\
        }\n\
        #form_hypescience p {\n\
            margin: 0;\n\
            padding: 0;\n\
        }\n\
        #form_hypescience label {\n\
            font-size: x-small;\n\
            display: block;\n\
        }\n\
        #form_hypescience input[type=text], textarea{\n\
            font-size: x-small;\n\
            width: 240px;\n\
        }\n\
        #form_hypescience textarea {\n\
            height: 40px;\n\
        }\n\
        #form_hypescience button {\n\
            background:#000000 none repeat scroll 0 0;\n\
            border: medium none;\n\
            color: #e7e7e7;\n\
            padding: 1px;\n\
            font-size: 60%;\n\
        }\n\
    \n\
    </style>\n\
    \n\
    <form class="form_hypescience" method="post" action="<!URL_PROCESS_FORM_DATA!>">\n\
    <p>\n\
        <label for="nome">Seu Nome</label>\n\
        <input type="text" id="nome" name="nome" size="30" />\n\
    </p>\n\
    <p>\n\
        <label for="email">Seu e-mail</label>\n\
        <input type="text" id="email" name="email" size="30" />\n\
    </p>\n\
    <p>\n\
        <label for="emails_amigos">E-mail dos seus amigos</label>\n\
        <textarea id="emails_amigos" name="emails_amigos" cols="10" rows="3"></textarea>\n\
    </p>\n\
    <p>\n\
        <label for="mensagem">Mensagem</label>\n\
        <textarea id="mensagem" name="mensagem" cols="10" rows="3"></textarea>\n\
    </p>\n\
    <p>\n\
        <label for="captcha">Digite o texto ao lado</label>\n\
        <input type="text" id="captcha" name="captcha" size="15" />\n\
    </p>\n\
    <button type="button" id="enviar">Enviar</button>\n\
    </form>\n\
    <span id="retorno_envio_form"></span>'
);
$('#enviar').click(function(){
    var parametros = new Array();
    parametros.push('nome=' + $('#nome').val());
    parametros.push('email=' + $('#email').val());
    parametros.push('emails_amigos=' + $('#emails_amigos').val());
    $('#retorno_envio_form').html('\
        <script type="text/javascript" \n\
        src="<!URL_PROCESS_FORM_DATA!>?' +
        encodeURI(parametros.join('&')) +
        '"></script>\n\
    ');
});});
$(文档).ready(函数(){
$('#form_hypescience').html('\
\n\
#表单\u hypescience{\n\
宽度:250px;\n\
高度:250px;\n\
}\n\
#表单\u hypescience p{\n\
边距:0;\n\
填充:0;\n\
}\n\
#表单_hypescience标签{\n\
字体大小:x-small;\n\
显示:块;\n\
}\n\
#form_hypescience输入[type=text],textarea{\n\
字体大小:x-small;\n\
宽度:240px;\n\
}\n\
#form_hypescience文本区域{\n\
高度:40px;\n\
}\n\
#表单\u hypescience按钮{\n\
背景:#000000无重复滚动0;\n\
边框:中-无;\n\
颜色:#e7e7e7;\n\
填充:1px;\n\
字体大小:60%;\n\
}\n\
\n\
\n\
\n\
\n\
\n\
Seu Nome\n\
\n\

\n\ \n\ Seu电子邮件\n\ \n\

\n\ \n\ 电子邮件dos seus amigos\n\ \n\

\n\ \n\ 策略\n\ \n\

\n\ \n\ Digite o texto ao lado\n\ \n\

\n\ 环境\n\ \n\ ' ); $('#enviar')。单击(函数(){ var parametros=新数组(); parametros.push('nome='+$('#nome').val()); parametros.push('email='+$('#email').val()); parametros.push('emails_amigos='+$('#emails_amigos').val()); $('#returno_envio_form').html('\ \n\ '); });});
我通过javascript include发送表单数据(因为浏览器的安全模型涉及对不同域的请求)。在FireFox中,代码运行得很好,我正在想下一步该怎么做,这时我注意到Microsoft浏览器上的代码在单击按钮时发送了两次请求。我用了一个叫做Fiddler的程序来确认这个事实

这是第一个请求的示例:

GET/teste/process\u form.php?nome=maria%20&email=o%20cara&email\u amigos=um@email.comHTTP/1.1

现在是第二个请求(发生在第一个请求之后):

GET/teste/process\u form.php?nome=maria%20&email=o%20cara&email\u amigos=um@email.com&_=1251168480125 HTTP/1.1

我尝试使用preventDefault()(在函数末尾返回false),切断表单,使用输入类型='submit'代替按钮,使用链接代替按钮,使用$('body').append()创建脚本。有人想在这里帮忙吗

提前谢谢。 ps:我像seth那样尝试的代码说:

$('#data_form').submit(function(){
    var parametros = new Array();
    parametros.push('nome=' + $('#nome').val());
    parametros.push('email=' + $('#email').val());
    parametros.push('emails_amigos=' + $('#emails_amigos').val());
    parametros.push('mensagem=' + $('#mensagem').val());
    $('#retorno_envio_form').html('\
        <script type="text/javascript" \n\
        src="<!URL_PROCESS_FORM_DATA!>?' +
        encodeURI(parametros.join('&')) +
        '"></script>\n\
    ');
    return false;
});
$('#数据表格')。提交(函数(){
var parametros=新数组();
parametros.push('nome='+$('#nome').val());
parametros.push('email='+$('#email').val());
parametros.push('emails_amigos='+$('#emails_amigos').val());
parametros.push('mensage='+$('#mensage').val());
$('#returno_envio_form').html('\
\n\
');
返回false;
});
编辑

好的,原来的答案是错的。您的表单正在执行POST,但您看到两个GET请求。很抱歉。第一次就错过了

与其用HTML写出脚本标记,为什么不直接使用函数呢

$('#enviar').click( function(evt) {
  var parametros = new Array();
  parametros.push('nome=' + $('#nome').val());
  parametros.push('email=' + $('#email').val());
  parametros.push('emails_amigos=' + $('#emails_amigos').val());
  $.getScript('<!URL_PROCESS_FORM_DATA>?' + encodeURL(parametros.join('&') ),
    function() {
     // something you'd like to do afterwards
    });
});
$('enviar')。单击(函数(evt){
var parametros=新数组();
parametros.push('nome='+$('#nome').val());
parametros.push('email='+$('#email').val());
parametros.push('emails_amigos='+$('#emails_amigos').val());
$.getScript(“?”+encodeURL(parametros.join(“&”),
函数(){
//之后你想做什么
});
});
这是因为当单击submit按钮时表单正在提交,然后您的JS调用也在进行

您可以停止我以您的形式连接onsubmit(而不是onclick)

像这样:

  $("#id_to_your_form").submit(function() {
     var parametros = new Array();
     parametros.push('nome=' + $('#nome').val());
     parametros.push('email=' + $('#email').val());
     parametros.push('emails_amigos=' + $('#emails_amigos').val());
     $('#retorno_envio_form').html('\
         <script type="text/javascript" \n\
          src="<!URL_PROCESS_FORM_DATA!>?' +
          encodeURI(parametros.join('&')) +
     '"></script>\n');
      return false;
  });
$(“#id_to_your_form”)。提交(函数(){
var parametros=新数组();
parametros.push('nome='+$('#nome').val());
parametros.push('email='+$('#email').val());
parametros.push('emails_amigos='+$('#emails_amigos').val());
$('#returno_envio_form').html('\
\n');
返回false;
});
返回false
将阻止表单提交


谢谢赛斯的回答!我试过你说的,但没用。我更新了答案,加入了代码。这和你试过的相符吗?你仍然看到两个申请表?是的,赛斯,我试过了,就像你举例一样,我遇到了同样的问题。通过搜索我发现了这篇文章:这个bug影响了IE6和IE7。但读完这篇文章后,我仍然不知道如何解决这个问题。也许我可以更改服务器的输出以不触发错误,这只是一个想法。您将#id_的值更改为#your_表单以匹配表单的id,对吗?你没有继续使用#enivar吧?我在问题的最后添加了测试seth的代码。