gpt4 book ai didi

javascript - 使用 JavaScript URL 模拟 JSONP 响应

转载 作者:数据小太阳 更新时间:2023-10-29 03:54:46 25 4
gpt4 key购买 nike

我在 WP 网站上使用 Gravity Forms。我的表单通过 ajax POST 到 Pardot使用 Pardot form handlers .我遇到了一个问题,Pardot 处理表单 6x,没有其他错误。研究表明,这是因为Pardot不支持CORS或JSONP,因此在使用ajax提交时会陷入循环。当表单处理程序的成功 URL 设置为引用 URL 时,它正在处理提交但永远不会“完成”。它在放弃之前尝试了 6 次,每次都处理提交的数据并发送新的潜在客户通知电子邮件。

帕多 help docs建议以下解决方案:

It is possible to simulate a JSONP response by setting the Success and Error URLs for the form handler to be JavaScript URLs that execute Success and Error callbacks, respectively.

我不完全确定这意味着什么或如何处理它。我已经完成了一些 stackoverflowing 和谷歌搜索,但我似乎无法全神贯注于如何去做。有人可以帮助阐明这个概念或为我指明正确的方向吗?

谢谢!

最佳答案

编辑:因此,在与此抗争几天后,我将发布我的最终解决方案,它可能会帮助其他人尝试使用 JSONP 与 Pardot 进行通信。这是一个由三部分组成的问题:

  1. 向 Pardot 表单处理程序发送 JSONP 请求
  2. 将 Pardot 表单处理程序成功/错误重定向到您自己的服务器
  3. 从您的服务器返回 JSONP

从处理程序向 Pardot 发送 JSONP 请求

要将表单数据发送到表单处理程序,您需要对字段名称和值进行 URI 编码。

(使用 JQuery 的示例。'?callback=' 在指定数据类型时由 ajax() 添加:'jsonp'):

var data = { 'field1' = 'value1', 'field' = 'value2' };
var uriEncodedParams = $.param(data);
var targetUrl = <Pardot Form Handler URL> + '?' + uriEncodedParams;

$.ajax({
url: targetUrl,
dataType: 'jsonp',
jsonpCallback: 'callback'
});

window.callback = function (data) {...}

将 Pardot 从处理程序成功/错误重定向到您自己的服务器

查看@nickjag 的回答:

将成功位置和错误位置设置为后端端点。

由于 pardot 不会转发您传入的任何 GET 参数,您必须使用一些默认值,即回调函数名称(因此指定 jsonpCallback 并且在我的请求中没有成功)。

从你的服务器返回 JSONP

我在使用时遇到控制台错误问题(Uncaught SyntaxError: Unexpected token :):return "{ 'result' : 'success' }" 因为它是一个 JSON 对象并且 JSONP 需要一个带有 JavaScript 的文件。所以返回的格式应该是:return "callback({ 'result' : 'success' })"

而且 Pardot 再次不转发 GET 参数,从 JQuery 生成的回调函数名称没有传播,我无法返回正确的 JavaScript 代码。如果未提供,则默认使用函数名称“callback”。

Guide for returning JSONP from .NET MVC backend

关于javascript - 使用 JavaScript URL 模拟 JSONP 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47047487/

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