1

この単純な iContact フォームを、成功ページにもエラー ページにもリダイレクトしないようにしようとしています。ページからリダイレクトされたり、ページをリロードしたりせずに、訪問者にフォームを送信してもらいたいだけです。

私は周りを見てきましたが、これを解決できませんでした。これが私のiContactフォームコードです(アカウント情報を置き換えました):

<style>
.link,
.link a,
.signupframe
{
    color: #000000;
    font-family: Arial, Helvetica, sans-serif;
    font-size: 13px;
    }
    .link,
    .link a {
        text-decoration: none;
        }
    .signupframe {
        border: 1px solid #000000;
        background: #ffffff;
        }
.signupframe .required {
    font-size: 10px;
    }
</style>
<form method="post" action="https://app.icontact.com/icp/signup.php" name="icpsignup" id="icpsignupAAAA" accept-charset="UTF-8" onsubmit="return verifyRequiredAAAA();" >
<input type="hidden" name="redirect" value="http://www.icontact.com/www/signup/thanks.html">
<input type="hidden" name="errorredirect" value="http://www.icontact.com/www/signup/error.html">

<div id="SignUp">
<table width="260" class="signupframe" border="0" cellspacing="0" cellpadding="5">
    <tr>
      <td valign="top" align="right">
        <span class="required">*</span> Email
      </td>
      <td align="left">
        <input type="text" name="fields_email">
      </td>
    </tr>
    <input type="hidden" name="listid" value="42379">
    <input type="hidden" name="specialid:42379" value="O6IC">

    <input type="hidden" name="clientid" value="954091">
    <input type="hidden" name="formid" value="4616">
    <input type="hidden" name="reallistid" value="1">
    <input type="hidden" name="doubleopt" value="0">
    <tr>
      <td> </td>
      <td><span class="required">*</span> = Required Field</td>
    </tr>
    <tr>
      <td> </td>
      <td><input type="submit" name="Submit" value="Submit"></td>
    </tr>
    </table>
</div>
</form>
<script type="text/javascript">

var icpForm4616 = document.getElementById('icpsignupAAAA');

if (document.location.protocol === "https:")

    icpForm4616.action = "https://app.icontact.com/icp/signup.php";
function verifyRequired4616() {
  if (icpForm4616["fields_email"].value == "") {
    icpForm4616["fields_email"].focus();
    alert("The Email field is required.");
    return false;
  }


return true;
}
</script>
4

3 に答える 3

0

送信時に代わりにAJAXを使用してフォームを投稿してください。上記と同じonSubmit呼び出しを使用し、AJAXで投稿してから、代わりにfalseを返します(フォームはアクション属性値に投稿しません)。以下の例では、ajax関数にjQueryライブラリを使用しているため、持っていない場合はダウンロードしてインストールする必要があります...

下部にあるJavaScriptを削除してから、代わりにこれを追加してください。FTPにjQueryファイルをダウンロードしてインストールしたことを確認してください。また、html、head、bodyタグを使用してHTML構造を正しく追加します:http ://www.w3.org/TR/html401/struct/global.html#h-7.1

<script type="text/javascript" src="/js/jquery.1.7.2.min.js"></script>
<script type="text/javascript">
 function verifyRequiredAAAA()
 { 

   var eReg = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/; // regex to check valid email
   var email = $('input[name="fields_email"]').val();
   if (email == "") {
      $('input[name="fields_email"]').focus();
      alert("The Email field is required.");
      return false;
   } else if (!eReg.test(email)) {
      $('input[name="fields_email"]').focus();
      alert("The Email address is incorrect.");
      return false;
   } else {
      $.post("https://app.icontact.com/icp/signup.php",
            $("#icpsignupAAAA").serialize(), function(data){
                  $('#successcontainer').html(data);
            });
            return false;
   }
 } 

</script>

次に、HTMLに、成功の可能性のあるメッセージのコンテナを配置します。

<div id="successcontainer"></div>

(ここでのメッセージはPHPスクリプトからのものです(PHPは何かを返す必要があります...))

FORMタグを次のように変更します。

 <form id="icpsignup4616" onsubmit="return verifyRequired4616()" accept-charset="UTF-8" name="icpsignup" action="" method="post">

たとえば、success関数で(successcontainerのある行の後に)追加する場合は、フォーム全体を削除することもできます。

$("#icpsignupAAAA").hide();
于 2012-09-04T00:07:33.917 に答える
0

クロスドメイン (CORS) の制限により、やりたいことができないようです。提案されたように jQuery ソリューションを使用しようとすると、次のような結果が得られます。

XMLHttpRequest cannot load https://app.icontact.com/icp/signup.php. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:8000' is therefore not allowed access.

アップデート

Thr リクエストは iContact サーバーに到達しているようです。ただし、コンソールのそのエラーに加えて、AJAX 要求は失敗したと見なされます。

于 2015-11-05T12:42:18.480 に答える
0

これらの行の値を、成功またはエラー時にリダイレクトする URL に変更します。

<input type="hidden" name="redirect" value="http://www.icontact.com/www/signup/thanks.html">
<input type="hidden" name="errorredirect" value="http://www.icontact.com/www/signup/error.html">
于 2012-09-05T19:32:31.347 に答える