我正在更新旧网站并遇到打嗝。我正在重写联系表单以使用ajax而不是正常的表单提交/感谢页面。表单操作发送到第三方站点(我无权访问解析数据的PHP)并且它与基本表单一起使用。当我使用ajax提交时,表单提交,不会抛出任何错误,但是第三方代码放入数据库的数据是空白的。相同的表单名称,相同的值。这是我的js:
$("#contactForm input,#contactForm textarea").jqBootstrapValidation({
preventSubmit: true,
submitError: function($form, event, errors) {
// additional error messages or events
},
submitSuccess: function($form, event) {
event.preventDefault(); // prevent default submit behaviour
// get values from FORM
var fname = $("#fname").val();
var lname = $("#lname").val();
var email = $("#email").val();
var cphone = $("#cphone").val();
var comments = $("#comments").val();
var address = $("#address").val();
var city = $("#city").val();
var zip = $("#zip").val();
$.ajax({
url: "https://my.serviceautopilot.com/AddEstimate.aspx?id=*************&wid=****************",
type: "POST",
dataType: 'jsonp',
processData: false,
data: {
fname: fname,
lname: lname,
cphone: cphone,
email: email,
comments: comments,
address: address,
city: city,
zip: zip
},
...
在原始子目录中,数据如下所示: 我相信它是因为数据作为原始表单数据传递,但作为第二个示例中查询字符串的一部分。我假设这是正确的吗?代码有不同的问题吗?
我尝试使用不起作用的表单数据对象,它仍然出现在查询字符串中,但仍然显示为空白。我试过调整数据类型,内容类型,processdata = false,但没有运气。在过去,我可以访问服务器端代码并且没有调试问题并且可以轻松修复此类问题,但此时我有点迷失。谢谢大家。
答案 0 :(得分:2)
readBeacons.values.max()
JSONP请求必须是GET请求(它们通过生成具有dataType: 'jsonp',
属性的<script>
元素来工作。他们不能包括请求正文。
如果你想发出POST请求,请不要使用JSONP。
(就此而言,无论如何都不要使用JSONP,这是一个肮脏的黑客来解决同源策略,我们已经有多年的CORS了。)
答案 1 :(得分:0)
如果您使用第三方收集表单数据,则必须使用Post方法使用CURL请求。