2009-07-30 11 views
1

ich eine Form haben, die ich brauche, um die Informationen zu einer externen Website zu veröffentlichen, aber aus irgendeinem Grund, warum ich erhalte eine Fehlermeldung:Ajax/JQuery/JSON Forms

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

den Code hier, dass ich bin mit der Form zu tun (oder dies versuchen):

<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> 

Könnte jemand bitte helfen Sie mir meine Daten auf die externe Website zu veröffentlichen :)

+0

Vielleicht spielt es keine Rolle, aber Sie können diese URL von Ihrem Codebeispiel entfernt werden soll. Eine reguläre GET-Anfrage zeigt Ihr ursprüngliches Anmeldeformular an. Ich hoffe, du hast das noch nicht mit deiner Speicherschicht verbunden. – Alex

+0

yeh, das ist die Form, die ich versuche, auf meinem Server zu implementieren, könnte seltsam klingen, aber ich brauche das Formular, um die Informationen an diese URL zu senden (wo das Originalformular ist) und auch um Informationen auf meine Datenbank zu senden die Probleme – SoulieBaby

Antwort

3

Aufgrund von domänenübergreifenden Einschränkungen ist es unmöglich, mit AJAX an eine andere Domäne zu senden. Die Art und Weise jsonp funktioniert, ist es fügt ein <script> Tag innerhalb des DOM, so dass es eine GET-Anfrage durchführt.

3

Browser ein Sicherheitskonzept Same Origin Policy genannt haben AJAX-Anfragen können nur darauf zugreifen die Domain, aus der die Seitenquelle stammt (mit einigen kleineren Vorbehalten und Umgehungslösungen, aber lang und kurz ..)

Ihre beste Wette ist es, an eine lokale Seite zu senden, die als Proxy fungiert, es wird die " echter "HTTP POST zur externen Seite.

+0

Entschuldigung, dumm zu klingen, aber wie kann ich die lokale Seite bekommen, um die Daten weiterzuleiten? – SoulieBaby

2

Keine Notwendigkeit, Variable für jede Eingabe im Formular zu verwenden.

können Sie $ ("form"). Serialize() verwenden, um alle Eingabefelder zu posten.

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

siehe hier jquery form Serialize