2009-07-30 188 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