2009-07-30 190 views
1

我有一个形式,我需要发布的信息到外部网站,但由于某些原因,我得到一个错误:阿贾克斯/ JQuery的/ JSON窗体

Error: [Exception... "Access to restricted URI denied" code: "1012" nsresult: "0x805303f4 (NS_ERROR_DOM_BAD_URI)" location: "jquery.core.1-3-2.min.js Line: 19"] Source File: jquery.core.1-3-2.min.js Line: 19

下面的代码,我“M用做形式(或试图这样做):

<script type="text/javascript" language="javascript"> 
$(function() { 

    $(".FormButtons").click(function() { 

    var name  = $("input#contactDataFirstName").val(); 
    var lname  = $("input#contactLastName").val(); 
    var gender  = $("input#contactDataGender").val(); 
    var dobd  = $("input#contactDataDateOfBirthday").val(); 
    var dobm  = $("input#contactDataDateOfBirthmonth").val(); 
    var doby  = $("input#contactDataDateOfBirthyear").val(); 
    var mobile  = $("input#contactDataMobilePhoneNumber").val(); 
    var street  = $("input#contactDataStreetAddress").val(); 
    var suburb  = $("input#contactDataSuburbTownCity").val(); 
    var postcode = $("input#contactDataPostcode").val(); 
    var country  = $("input#contactDataCountry").val(); 
    var state  = $("input#contactDataCountrySubdivisionIDNew").val(); 
    var password = $("input#contactDataPassword").val(); 
    var email  = $("input#contactDataEmail").val(); 
    var remail  = $("input#contactDataReceiveEmail").val(); 
    var rmail  = $("input#contactDataReceiveMail").val(); 
    var rsms  = $("input#contactDataReceiveSMS").val(); 

    var dataString = 'contactDataFirstName='+ name + '&contactLastName=' + lname + '&contactDataGender=' + gender + '&contactDataDateOfBirthday=' + dobd + '&contactDataDateOfBirthmonth=' + dobm + '&contactDataDateOfBirthyear=' + doby + '&contactDataMobilePhoneNumber=' + mobile + '&contactDataStreetAddress=' + street + '&contactDataSuburbTownCity=' + suburb + '&contactDataPostcode=' + postcode + '&contactDataCountry=' + country + '&contactDataCountrySubdivisionIDNew=' + state + '&contactDataPassword=' + password + '&contactDataEmail=' + email + '&contactDataReceiveEmail=' + remail + '&contactDataReceiveMail=' + rmail + '&contactDataReceiveSMS=' + rsms; 

    $.ajax({ 
     type: "POST", 
     url: "path_to_url", 
     //dataType: "jsonp", 
     data: dataString, 
     success: function() { 
     $('#contact_form').html("<div id=\"message\"></div>"); 
     $('#message').html("<h2>Contact Form Submitted!</h2>") 
     .append("<p>We will be in touch soon.</p>") 
     .hide() 
     /*.fadeIn(1500, function() { 
      $('#message').append("<img id='checkmark' src='images/check.png' />"); 
     });*/ 
     } 
    }); 
    return false; 
    }); 
}); 
</script> 

可能有人请帮助我我的数据发布到外部网站:)

+0

也许不要紧,但你可能希望从你的代码示例删除URL。对其的常规GET请求会显示您的原始输入表单。我希望你没有把它连接到你的存储层。 – Alex 2009-07-30 06:36:36

+0

是的,这是我试图在我的服务器上实现的形式,可能听起来很奇怪,但我需要的形式发送信息到该网址(原始形式是),并发送信息到我的数据库..亨氏所有问题 – SoulieBaby 2009-07-30 23:18:41

回答

3

由于跨域限制,无法使用AJAX将POST张贴到不同的域。 jsonp的工作方式是在DOM内部插入一个<script>标记,以便执行GET请求。

3

浏览器都称为同源策略的安全概念由此AJAX请求只能访问页面源的来源(从一些小的注意事项和解决方法,但长短)的域名。

最好的办法是发布到本地页面作为代理,它会做“真正的“HTTP POST到外部网站。

2

无需为表单中的每个输入使用变量。

您可以使用$(“form”)。serialize()来发布所有输入字段。

var str = $("form").serialize(); 

看到这里jquery form Serialize