2

顧客の名前と電子メール アドレスを icontact (メーリング リスト アプリケーション) に送信するフォームを作成しようとしています。

すべての値は icontact に対して正しく、通常どおりフォームを送信すると、icontact は電子メール アドレスを追加したと応答します。成功メッセージは、icontact の Web サイトから新しいページに読み込まれます。

私が達成したいのは、顧客を新しいページに送ることなく、現在のページ内で ajax がフォームを送信し、成功メッセージを返すことです。

ここにテストページがあります: http://www.skhot.com/test/js-test/forms/index.php

4

7 に答える 7

3

ajax 経由で icontact フォームを送信する際に問題がある場合は、次の手順を試してください。

$.get("https://app.sandbox.icontact.com/icp/signup.php", { listid: "xxx", "specialid:xxx": "xxx",clientid : "xxx",fields_email: 'test@gmail.com' }, function(){

                    alert('email added to the list :)');

            } );

xxx を必要なパラメーターに置き換えます:)

于 2010-12-13T08:33:23.307 に答える
2

彼のアンサーのおかげで、いくつかの変更が加えられましたが、ここに私が持っているものがあります


<form>
 Email<br />
 <input type="text" name="email" id="email" class="text" /><br />

 First Name<br />
 <input type="text" name="fname" id="fname" class="text" /><br />

 Last Name<br />
 <input type="text" name="lname" id="lname" class="text" /><br />

 <input type="submit" id="submit" onclick="icontact_submit(); return false;"/>
</form>

<script type="text/javascript">
 function icontact_submit()
 {  
 //grab data from data
 var email = $('#email').val();
 var first_name = $('#fname').val();
 var last_name = $('#lname').val();

 //do some validation here

 //if validation pass do this
 $.post("https://app.icontact.com/icp/signup.php", { listid:"xxxxx", "specialid:xxxx":"xxxx", clientid:"xxxxx", fields_email:email, fields_fname:first_name, fields_lname:last_name }, function(){
  alert('email added to the list :)'); //this does not seem to work yet though
 });

 //else validation failed, do some of this

 }
</script>
于 2012-10-09T18:26:45.777 に答える
2

あなたの場合、私は次のように思います:

preventDefaultは、フォームのアクション URL に従う送信ボタンの通常の動作を防ぎます。

$('#frmSubmit').click(function(e) {
    e.preventDefault();
}

それがうまくいかない場合は、成功関数で false を返すことを試すことができます。

$('#change-form')
   .jqTransform()
   .validate({
     submitHandler: function(form) {
       $(form).ajaxForm({
            success: function() {
                $('#change-form').hide();
                $('#frmWrap').append("<p class='thanks'>Thanks! Your request has been sent.</p>")
                return false;
                }
           });
         }
       }); 

EDIT:あなたが試すことができるもう一つのことは、「return false」をonsubmitイベントに添付することです:

<form method=post action="https://app.icontact.com/icp/signup.php" name="icpsignup" accept-charset="UTF-8" id="change-form" onsubmit="return false;">
于 2009-08-12T17:38:12.193 に答える
0

icontact を方程式から外すと、すべてが計画どおりに機能しました。したがって、問題はコードではなく、icontact が PHP を処理する方法です。本当の解決策については、彼らと連絡を取る必要があります。

助けてアドバイスを提供してくれたみんなに感謝します!私のトラブルシューティングは、あなたがいなければうまくいきませんでした。

于 2009-08-12T19:35:18.727 に答える
0

1 つのオプションは、ボタンを使用して JavaScript onClick ハンドラーを持つ代わりに、送信ボタンを持つフォームを取り除くことです。onClick ハンドラーでは、AJAX を使用してフォーム内のデータを POST 要求で送信し、応答を取得する必要があります。応答を受け取ったら、jQuery を使用して、変更したい div フォームを変更するか、リダイレクトなどを行います。

本当の問題は、フォーム送信はデフォルトでフォームタグのアクション属性に新しいページを常にロードするだけなので、HTMLフォーム送信メソッドに依存できないことだと思います。

もっと効率的な方法は他にもあるかもしれませんが (特に jQuery を使用する方法はよくわかりません)、私が提案したアルゴリズムは機能するはずです。

于 2009-08-12T17:33:41.750 に答える
0

jQuery Ajaxを参照してください。

$.ajax({
   type: "POST",
   url: "some.php",
   data: $("#idform").serialize(),
   success: function(msg){
     alert( "Data Saved: " + msg );
   }
 })

;

于 2009-08-12T17:34:58.487 に答える
0

Ajax はフォームを送信できますが、成功メッセージを表示するのは難しいです。

このJQuery AJAXポストメソッドを参照してください

type パラメータを「html」に設定します。

iContact サーバーからの応答を解析して表示できるコールバック関数を指定します。

于 2009-08-12T17:37:01.900 に答える