標準のフォーム送信アクションでSalesforceに送信しているフォームがあります。デフォルトでは、POSTの完了後に特定のURLにリダイレクトするようにSalesforceに指示できます。
フォームページに他のアクティビティがあるため、リダイレクトされたくありません。問題ありません。私のページはすでにjQueryを使用しているので、次のような便利な$.ajaxユーティリティを使用できます。
$('#wrapper').on('click', '#formsubmit', function(e) {
e.preventDefault();
var formData = $('#subForm').serialize();
$.ajax({
type: "POST",
url: "https://www.salesforce.com/servlet/servlet.WebToLead?encoding=UTF-8",
data: formData,
success: function() {
console.log('success!'); // or not!
},
error:function (xhr, ajaxOptions, thrownError){
console.log(xhr.status); // 0
console.log(thrownError); // empty
}
});
});
私の見当違いの頭脳では、Salesforceが私の古き良きリダイレクトを返すことを想像しました。これは、私が単に破棄/無視できる「成功」としてカウントされます。確かに見当違い!
- 200 OKの結果(通常は「成功」を意味します)が表示されますが、成功のコールバックは作動しません。
- リードがSalesforceデータベースに追加されます
- 返されたものの内容を検査すると、ゼロが表示されます。応答に内容はありません。
- エラーコールバックはトリップされていますが(200 OKにもかかわらず)、意図的にリダイレクトされなかったことが原因で、「リソースが利用できません」と見なされますか?(したがって、私のステータスコードは0であり、throwdErrorにコンテンツはありませんか?)
コールバックで追加のアクションをトリガーできるように、これを成功したPOSTとして識別するためのアドバイスはありますか?応答を完全に無視したくない、または失敗したPOSTを成功したかのように処理しているシナリオになってしまう可能性があります。どういうわけか成功を捉える必要があります。
クロスサイトスクリプティングの問題である可能性もありますが、アプリケーションはJSONPでデータを交換しないため、それを回避する方法がわかりません(また、それを特定する方法もわかりません)。そもそも)。