Javascript 表单操作与AJAX请求-发送JSON
在一个相当重要的PHP/Drupal网站上(这不是Drupal的问题),我们的任务是允许一个深度链接进入一个页面,其中调用站点必须提供大量数据 跨域不会成为问题,因为我们可以控制两端,并可以根据需要进行调整 因此,我们想要的是,在发起服务器[a]上单击表单提交将把POST数据发送到接收服务器[B]。这很简单 复杂性的产生是因为有大量的非用户数据也必须发送(不管为什么或从哪里发送)。因此,(i)有额外的数据要添加到POST有效负载中,(ii)原始服务器[A]是node.js,它们希望发送JSON编码的数据,而不是使用urlencoded格式 他们(JS的人)想一跳就完成。用户单击[A]上的表单,构建有效负载,发布到deeplink URL,浏览器显示[B]中的新页面 我可以在PHP端处理它,但我无法从概念上理解它。我认为这是不可能的 据我所知,表单操作URL是关键。它重定向浏览器,在URL或正文中发送表单URL编码的数据。(正如我们所知,它不能像JSON那样实现。) 但在我看来,如果他们做了任何事情来中断[A]上表单的处理,浏览器将不会重定向到[B],它只会变成一个AJAX调用 所以问题是:是否可以修改表单的有效负载,但仍然获得相同的行为,将浏览器重定向到新页面? (如果这是不可能的,那么解决方案相对简单,一个AJAX调用来设置一切,它返回一个URL,将浏览器重定向到提供的URL。)不,它不是 最接近的方法是使用Ajax发出请求,并在响应中包含一个URL(带有标识您使用Ajax发出的请求的标记),您可以在XHR的Javascript 表单操作与AJAX请求-发送JSON,javascript,php,json,ajax,forms,Javascript,Php,Json,Ajax,Forms,在一个相当重要的PHP/Drupal网站上(这不是Drupal的问题),我们的任务是允许一个深度链接进入一个页面,其中调用站点必须提供大量数据 跨域不会成为问题,因为我们可以控制两端,并可以根据需要进行调整 因此,我们想要的是,在发起服务器[a]上单击表单提交将把POST数据发送到接收服务器[B]。这很简单 复杂性的产生是因为有大量的非用户数据也必须发送(不管为什么或从哪里发送)。因此,(i)有额外的数据要添加到POST有效负载中,(ii)原始服务器[A]是node.js,它们希望发送JSON编
load
事件中将该URL分配给location.href
。不,不是
最接近的方法是使用Ajax发出请求,并在响应中包含一个URL(带有标识您使用Ajax发出的请求的标记),您可以在XHR的
加载事件中将该URL分配给location.href
。让我了解您的问题:
在服务器A(nodejs)上有一个按钮,单击该按钮后,您希望将一些数据(加上大量其他数据)发送到第二个服务器B,该服务器B将显示完全不同的页面
您的(nodejs)人员希望直接从nodejs向您发送json编码的数据
我认为你有两个选择
第一,不太好:
nodejs在服务器A上显示表单,在指向服务器B(深度链接)的
标记操作
属性中,将附加数据设置为隐藏输入字段(按照您的意愿进行编码),然后服务器B获取数据,解码并显示最终页面
优点:
-简朴
缺点:
-您向外部用户公开服务器B的所有数据和链接(数据通过浏览器发送到服务器B),
-可能存在大量数据(以及长时间传输),
-数据可能被(攻击者)操纵
第二种选择更好:
服务器A显示html表单
,并从该表单接收数据,然后服务器A直接向服务器B发送数据,然后服务器A接收来自服务器B的响应,并作为对已发布表单的响应发送
优点:
-安全(不公开其他数据,并且隐藏了深层url)
-服务器A和B可以通过LAN而不是internet进行通信,因此速度要快得多
-您可以隐藏服务器B的存在
缺点:
-如果您想将用户切换到服务器B,处理的复杂性-在这种情况下,您需要返回(例如)服务器B上页面的url,因此服务器a将发送HTTP重定向到此url作为响应。请让我了解您的问题:
在服务器A(nodejs)上有一个按钮,单击该按钮后,您希望将一些数据(加上大量其他数据)发送到第二个服务器B,该服务器B将显示完全不同的页面
您的(nodejs)人员希望直接从nodejs向您发送json编码的数据
我认为你有两个选择
第一,不太好:
nodejs在服务器A上显示表单,在指向服务器B(深度链接)的
标记操作
属性中,将附加数据设置为隐藏输入字段(按照您的意愿进行编码),然后服务器B获取数据,解码并显示最终页面
优点:
-简朴
缺点:
-您向外部用户公开服务器B的所有数据和链接(数据通过浏览器发送到服务器B),
-可能存在大量数据(以及长时间传输),
-数据可能被(攻击者)操纵
第二种选择更好:
服务器A显示html表单
,并从该表单接收数据,然后服务器A直接向服务器B发送数据,然后服务器A接收来自服务器B的响应,并作为对已发布表单的响应发送
优点:
-安全(不公开其他数据,并且隐藏了深层url)
-服务器A和B可以通过LAN而不是internet进行通信,因此速度要快得多
-您可以隐藏服务器B的存在
缺点:
-如果您想将用户切换到服务器B,处理的复杂性-在这种情况下,您需要返回(例如)服务器B上页面的url,因此,服务器A将发送HTTP重定向到此url作为响应。您可以将JSON数据以隐藏的形式输入吗?作为测试的一部分,我已经这样做了,效果很好,但这不是计划的数据契约的一部分。我想探索所有的选择,因为我甚至不知道是否可以做到。因此,最后才是真正的问题。我有其他的解决方案,但它可以按我们想要的方式完成吗?您认为您将从哪里修改有效负载?在我看来,你故意排除了简单的解决办法。我是