jquery ajax表单提交问题-表单数据已提交,但返回错误“未成功”

jquery ajax表单提交问题-表单数据已提交,但返回错误“未成功”,jquery,jquery-validate,Jquery,Jquery Validate,更新 来自Fiddler 2: 我可以看到发送的数据。它们也显示在另一个站点的数据库中 来自其他域/服务器的响应似乎不正确: Response sent 38 bytes of Cookie data: Set-Cookie: ARPT=YOLMQLS172.25.102.96CKMYK; path=/ This response did not contain a P3P Header. 即使报头响应不正确,继续执行此实现是否安全 我使用验证我的表单,然后使用jqueryajax将表单数据

更新

来自Fiddler 2:

我可以看到发送的数据。它们也显示在另一个站点的数据库中

来自其他域/服务器的响应似乎不正确:

Response sent 38 bytes of Cookie data:
Set-Cookie: ARPT=YOLMQLS172.25.102.96CKMYK; path=/

This response did not contain a P3P Header.
即使报头响应不正确,继续执行此实现是否安全

我使用验证我的表单,然后使用jqueryajax将表单数据发布到外部网站(潜在客户开发平台)

表单数据已成功提交到外部网站(Marketo)。我通过登录他们的网站验证了这一点,我可以看到我提交的测试表帖子以及所有的现场数据

但是,我从ajax调用中得到了一个错误而不是成功的响应

这是代码-有什么想法吗

$(feedbackForm).validate(
{
    validClass: "success",
    rules: 
    {
        FirstName: { required: true },
        LastName:  { required: true },
        Email:
        {
            required: true,
            email: true                                 
        },
        Question__c: { required: true }
    },
    messages:
    {
        FirstName: "Please enter your first name",
        LastName: "Please enter your last name",
        Email: "Please enter a valid email address",
        Question__c: "Please enter your message"
    },       
    submitHandler: function(form) 
    {            
        $.ajax(
        {
            type:"POST", 
            url: "http://app-k.marketo.com/index.php/leadCapture/save",                
            data: feedbackForm.serialize(),
            success: function(response)
            {
                feedbackForm.find('.form_result').html(response.statusText);
                alert('success');
            },
            error: function(response)
            {
                feedbackForm.find('.form_result').html(response.statusText);                       
                alert("error");
            }
        });  
        return false;          
    }

您似乎正在向不在您自己域中的url发出ajax请求,该url通常由于跨域访问限制而受到限制

如果它实际上不在您的域中,您需要通过服务器端语言向该服务器发出请求。ajax调用将是对代码的调用,而代码又会进行另一个调用


然而,如果他们允许公众从外部域访问该URL,那么我所说的就无关紧要了。

返回什么?如果您使用console.log(response),则在“error”函数中返回什么?如果要返回JSON数组,您可能只需要在AJAX函数中传递数据类型:“JSON”。Alert
$(“#easycopyFeedbackForm”)。serialize()
并查看控制台弹出的内容。log(response)返回一系列内容,如statusText=“error”。我不知道如何从对象判断它是否返回json,但我尝试了数据类型:“json”“还是一样。调试这类东西的一个好方法是在FireFox或Chrome中启动它,并分别使用FireBug网络面板或Chrome开发者工具网络选项卡。在这里,您将能够看到代码发送的数据以及服务器返回的确切响应。当然也有微软的Fiddler2,它做同样的事情,但没有与浏览器集成,所以没有那么光滑!我认为js看起来不错,除了跨域的问题——如果您可以控制服务器端组件,您可以使用jsonp来解决这个问题?如果失败了,请在本地应用程序中创建一个简单的web服务(或者在控制器上创建一个简单的操作,返回一个JsonResult),然后该服务(/或操作)从服务器端发布,并将响应转发回来-这是我经常使用的技术,我发现这比与jsonp callbacksKristian闲聊容易,url不在我的域中,是的,所以也许你在正确的区域。我使用的是.net应用程序,因此需要弄清楚如何在呼叫服务器端进行呼叫。但我也想知道,如果这是真的,为什么会将数据发布到外部站点?或者是由于跨域问题而没有返回的响应消息?很可能他们正在将该URL用于公共API,并且允许跨域请求访问该URL。这取决于他们