Salesforce - $.ajax 调用的成功处理程序

Salesforce - success handler for $.ajax call

本文关键字:成功 处理 程序 调用 ajax Salesforce      更新时间:2023-09-26

我有一个表单,我一直在向 Salesforce 提交标准表单提交操作。默认情况下,您可以告诉 Salesforce 在 POST 完成后将您重定向到给定的 URL。

我不再希望被重定向,因为我在表单页面上还有其他活动。没问题,我的页面已经在使用 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,并且抛出错误中没有内容?

关于将其识别为成功的 POST,以便我可以在回调中触发其他操作的任何建议?我不想完全忽略响应,否则我最终可能会遇到这样一种情况:我正在对失败的 POST 进行操作,就好像它成功了一样。我需要以某种方式捕捉成功。

我突然想到这也可能是跨站点脚本问题,但由于应用程序不在 JSONP 中交换数据,我不确定如何解决这个问题(我不确定如何首先识别它(。

这里有几件事:

1(由salesforce的API发送的重定向响应很可能被解释为错误代码。

2(后续页面(重定向后(的响应代码从声音来看是200 OK。

3( 无法使用 JSONP 执行 POST 请求。这是 JSONP 的限制;它实际上不是 AJAX 请求,而是包装在动态生成的脚本标记中的 HTTP GET 请求。此外,JSONP 仅在请求产生 200 OK 的 HTTP 响应时才有效。

我建议使用您自己的服务器端中介来处理您的 AJAX POST 请求。这将充当您的前端应用程序和 salesforce API 之间的代理。这也将允许你更好地控制发送到应用的响应。

var formData = $('#subForm').serialize();
   var response = $.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
                }
    }).responseText;

其中 var 响应将包含 ajax 调用的返回值