2

我有一个表单,我想将它的结果加载到一个 div 中。我已经搜索了一些关于此的主题,我认为这个jquery 提交表单然后在现有 div 中显示结果会起作用,但它不起作用。

到目前为止,这是我的代码:

<script type="text/javascript"> $('#form').submit(function() { // catch the form's submit event
$.ajax({ // create an AJAX call...
    data: $(this).serialize(), // get the form data
    type: $(this).attr('method'), // GET or POST
    url: $(this).attr('action'), // the file to call
    success: function(response) { // on success..
        $('#test').html(response); // update the DIV
    }
});
return false; // cancel original event to prevent form submitting }); </script>

<DIV id="test"></DIV>

<FORM id="form" name="pcc" method="post" action="http://wl.breedbandwinkel.nl/postcodecheck" onSubmit="return validatePcc(this);">
             <div class="one_third firstcols">
                <H4>Ik ben op zoek naar:</H4>

        <DIV class="ff"><INPUT type="radio" class="pccrad radio" name="sub" value="alles-in-een-pakketten" id="pcc-alles-in-een-pakketten" onclick="$('#pcc-no').hide(); $('#pcc-fpcon').css('visibility', 'visible'); if($('#pcg').val() == '') $('#pcg').focus();"><LABEL class="left pcm" for="pcc-alles-in-een-pakketten" onmouseover="mpopup('Alles-in-&eacute;&eacute;n pakketten','Extra voordelig pakket met internet, digitale telefonie en/of digitale televisie.');" onmouseout="kill();">Alles-in-&eacute;&eacute;n pakketten</LABEL></DIV>         <DIV class="ff"><INPUT type="radio" class="pccrad radio" name="sub" value="internet" id="pcc-internet" onclick="$('#pcc-no').hide(); $('#pcc-fpcon').css('visibility', 'visible'); if($('#pcg').val() == '') $('#pcg').focus();"><LABEL class="left pcm" for="pcc-internet" onmouseover="mpopup('Internet','Altijd supersnel onbeperkt online tegen een vast bedrag per maand.');" onmouseout="kill();">Internet</LABEL></DIV>                      <DIV class="ff"><INPUT type="radio" class="pccrad radio" name="sub" value="digitale-televisie" id="pcc-digitale-televisie" onclick="$('#pcc-no').hide(); $('#pcc-fpcon').css('visibility', 'visible'); if($('#pcg').val() == '') $('#pcg').focus();"><LABEL class="left pcm" for="pcc-digitale-televisie" onmouseover="mpopup('Digitale Televisie','Geniet van haarscherp digitaal beeld en geluid inclusief de gratis digitale programmagids.');" onmouseout="kill();">Digitale Televisie</LABEL></DIV>
            </div><!-- end .one_third -->
            <div class="one_third">
                <H4>Mijn postcode en huisnummer zijn:</H4>

            <TABLE border="0" cellspacing="0" cellpadding="0">
              <TR>
                <TD height="14" colspan="2">Postcode</TD>
                <TD>Huisnr.</TD>
              </TR>
              <TR>
                <TD width="51"><INPUT type="text" class="text" maxlength="4" size="5" value="" name="pcg" id="pcg" onKeyUp="autoTab(event,this,4,pcl);" onFocus="chBg(pcc,'pcg');" onBlur="chBg(pcc,'reset');" style="width: 41px;"></TD>
                <TD width="46"><INPUT type="text" class="text" maxlength="2" size="2" value="" name="pcl" id="pcl" onKeyUp="autoTab(event,this,2,hn);" onKeyDown="backSpace(event,this,pcg);" onFocus="chBg(pcc,'pcl');" onBlur="chBg(pcc,'reset'); upperCase(event,this);" style="width: 26px;"></TD>
                <TD width="36"><INPUT type="text" class="text" maxlength="6" size="4" value="" name="hn" id="hn" onKeyDown="backSpace(event,this,pcl);" onFocus="chBg(pcc,'hn');" onBlur="chBg(pcc,'reset');" style="width: 36px;"></TD>
              </TR>
            </TABLE>

            <U class="dot small" onmouseover="popup('Waarom mijn postcode invullen?','Om te kunnen controleren welke abonnementen op uw adres leverbaar zijn hebben wij uw postcode en huisnummer nodig.<br>Uiteraard respecteren wij uw privacy. Deze gegevens worden niet opgeslagen.');" onmouseout="kill();">
            Waarom mijn postcode invullen?</U>
            </div><!-- end .one_third -->
            <div class="one_third lastcols">
                <INPUT type="submit" name="submit" value="Vergelijk de aanbiedingen op uw adres" class="button">
            </div><!-- end .one_third -->
            </FORM>

所以我发现这是行不通的。我真的很想将操作 url ( http://wl.breedbandwinkel.nl/postcodecheck ) 的结果显示到<div id="test">. 目前我正在 iframe 中执行此操作,但这看起来并不“专业”。我希望我提供了足够的信息,如果不让见面知道。

4

1 回答 1

1

最重要的是,如果您的网页不是在http://wl.breedbandwinkel.nl中运行,那么 AJAX 调用可能根本不会运行,因为大多数浏览器都禁用了跨站点脚本。您不能从 bar.com 提供的页面向 foo.com 发出 AJAX 请求。为了避免这种情况,我通常会编写一个诸如“bar.com/ajaxActions.php”之类的文件,然后使用该 PHP 脚本向外部站点发出 GET 或 POST 请求。一旦它检索到结果,我只需将该结果打印到标准输出,然后它就会成为您的 AJAX 请求的结果。

我要做的另一件事是<form>放弃标签中的“方法”和“动作”属性,并将它们放入您尝试使用 jQuery 编写的 AJAX 请求中。在您的提交按钮中使用 onClick() 侦听器,例如:

<INPUT type="submit" name="submit" onClick="doAjaxRequest()" value="Vergelijk de aanbiedingen op uw adres" class="button">

然后在该函数中,使用您已经为初学者准备的代码:

<script type="text/javascript"> 
function doAjaxRequest() {
    $.ajax({ // create an AJAX call...
        data: $("#form").serialize(), // get the form data
        type: GET, // GET or POST
        url: "ajaxActions.php", // the file to call -- postcodecheck if you're on that same domain, otherwise ajaxActions.php
        success: function(response) { // on success..
            $('#test').html(response); // update the DIV
        }
    });
}

最后,如果您不在同一个域中,我将留给您找出 GET 请求(使用 file_get_contents())或 POST 请求(使用 cURL)的 PHP 代码。或者,如果您不能使用 PHP,则使用您选择的后端语言。在 PHP 中,假设您的邮政编码检查器接受了 GET 请求,您的 ajaxActions.php 文件将如下所示:

$response = file_get_contents("http://wl.breedbandwinkel.nl/postcodecheck?pcg=" . $_GET["pcg"] . "&pcl=" . $_GET["pcl"] . "&hn=" . $_GET["hn"] );
print $reponse;
于 2012-11-01T04:39:13.390 回答