2011-12-07 7 views
1

私は自分自身ではなく(web-to-lead機能を備えたsalesforce.com)ウェブサイトにフォームを提出しようとしていますが、私はjavascriptモーダルウィンドウを通してそれをやっています。フォームをテストした場合はJavaScriptとURLの作品を使用せずにJavascript URLを使用したポストフォーム

if(error_count == 0) { 
       $.ajax({ 
        type: "POST", 
        url: "[salesforce url]", 
        data: "first_name=" + first_name + "&last_name=" + last_name + "&email=" + email + "&firm=" + firm + "&[salesforceid]=" + AUM + "&[salesforceid]=" + custodian + "&[salesforceid]=" + custodian_other, 
        error: function() { 
         $('.error').hide(); 
         $('#sendError').slideDown('slow'); 
        }, 
        success: function() { 
         $('.error').hide(); 
         $('.success').slideDown('slow'); 
         $('form#callToAction').fadeOut('slow'); 
        }    
       }); 
      } 

ので、私は多分道を考えています。1回すべてのエントリは、テストの結果、エラーがないことを確認作られています

は基本的に、私はこれを使用しますJavaScriptがURLを処理する問題ですか?

問題点:データがSalesforceに正常に送信されていません。繰り返しますが、通常のHTMLフォームが動作し、javascriptは動作しません。だから私はjavascriptの問題としてそれを識別しました。

+0

ここに実際の質問がありますか?コードの中に何か問題がありますか? – deltaforce2

+0

申し訳ありませんが、問題の最後に追加されました。 – jwg2s

+2

クロスドメイン(salesforce)サーバーへのajax呼び出しをしようとしていると思いますが、これは不可能です。 –

答えて

2

受信側サーバーが許可し、ブラウザがCORSをサポートしていない限り、XHRクロスドメイン要求を行うことはできません。しかし、あなたはこれを成功させるために盲目的に提出することができます:

var $form = $("<form>", { 
    method: "POST", 
    action: "[salesforce url]", 
    target: "my-iframe" 
}).appendTo("body"); 

var $iframe = $("<iframe>", { 
    name: "my-iframe" 
}).bind("load", function() { 
    $('.error').hide(); 
    $('.success').slideDown('slow'); 
    $('form#callToAction').fadeOut('slow'); 
    $iframe.remove(); 
    $form.remove(); 
}).appendTo("body"); 

$.each(("first_name=" + first_name + "&last_name=" + last_name + "&email=" + email + "&firm=" + firm + "&[salesforceid]=" + AUM + "&[salesforceid]=" + custodian + "&[salesforceid]=" + custodian_other).split("&")), function (index, value) { 
    var pair = value.split("="); 
    $form.append("<input>", { 
     type: "hidden", 
     name: pair[0], 
     value: pair[1] 
    }); 
}); 

$form.submit(); 
+0

ありがとう、完璧に働いた。 – jwg2s

1

+1ジム・ホセ。このようなことは、ユーザーに対するXSS攻撃と解釈される可能性があります。そのため、ブラウザーはXSS攻撃を許可しません。

ブラウザのエラーログをチェックして、スクリプトを実行しようとするとセキュリティエラーが発生していないかどうかを確認できます。それでも何もしなければ、Firebugのようなツールをインストールして問題を特定できるかどうか確認してください。

また、このように、誤差関数のためのメソッドシグネチャの異なる並べ替えをしようとしてエラーハンドリングを向上させることができます:

error: function(jqXHR, textStatus, errorThrown) {...} 

エラーのソートがAjax呼び出しからスローされているものを確認することができますこの方法を。

関連する問題