gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 10:50:48 25 4
gpt4 key购买 nike

我有一个已通过标准表单提交操作提交给 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 数据库
  • 检查返回内容显示为零;响应中没有内容。
  • 错误回调 IS 被触发(尽管 200 OK)但可能是由于故意不重定向它被视为“资源不可用”? (所以我的状态码是0,thrownError里面没有内容?)。

关于将此标识为成功的 POST 以便我可以在回调中触发其他操作的任何建议?我不想完全忽略响应,否则我可能会遇到这样一种情况,即我正在对失败的 POST 采取行动,就好像它是成功的一样。我需要以某种方式获得成功。

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

最佳答案

这里有几件事:

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

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

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

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

关于javascript - Salesforce - $.ajax 调用的成功处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10591438/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com