Warum funktioniert jQuery AJAX PUT in Chrome, nicht jedoch in FF?

In Chrome wird ein HTTP-PUT genau so ausgeführt, wie es sein sollte, in FireFox 21 jedoch nicht. Es gibt keine Fehler in der Javascript-Konsole oder im Backend.

Hier ist das HTML:

<div id="createTeamModal" class="small reveal-modal">
        <form id="createTeamForm">
            <div class="row"><p id="teamFlavorText" class="lead">Building a new team</p></div>
            <div class="row">
                <div class="small-4 large-4 columns"><label>Team Name:</label></div>
                <div class="small-6 large-6 columns"><input name="teamName" id="teamName" type="text" size="20"/></div>
            </div>
            <div class="row"><p class="lead">Does this team work for a business?</p></div>
            <div class="row">
                <div class="small-4 large-4 columns"><label>Business Size:</label></div>
                <div class="small-6 large-6 columns">
                    <select id="businessSizeSelect" name="businessSizeSelect">
                    <option value="1">Nope, I work alone</option><option value="2">2 to 49</option><option value="3">50 to 99</option><option value="4">100 to 999</option><option value="5">1,000+</option>
                    </select>
                </div>
            </div>
            <div id="businessLocationDiv" class="row" style="display: none; margin-top: 20px;">
                <div class="small-4 large-4 columns"><label>Business Location:</label></div>
                <div class="small-6 large-6 columns">
                    <select id="businessLocationSelect" name="businessLocationSelect">
                    </select>
                </div>
            </div>
            <div id="businessTypeDiv" class="row" style="display: none; margin-top: 20px;">
                <div class="small-4 large-4 columns"><label>Industry:</label></div>
                <div class="small-6 large-6 columns">
                    <select id="businessTypeSelect" name="businessTypeSelect">                      
                    </select>
                </div>
            </div>
            <div class="row" style="margin-top: 20px;">
                <div class="large-offset-10 small-1 large-1 columns">
                    <button id="createTeamButton" class="small button">Create</button>
                </div>
            </div>
        </form>
        <a class="close-reveal-modal">&#215;</a>
    </div>

Und hier ist die jQuery:

$("#createTeamButton").click(function () {
    var teamObject = new Team();
    teamObject.description = $("#teamName").val();
    teamObject.businessSize = $("#businessSizeSelect").val();
    teamObject.businessType = $("#businessTypeSelect").val();
    teamObject.businessLocation = $("#businessLocationSelect").val();

    $.ajax({
        type: "PUT",
        url: "/ajax/rest/team",
        dataType: "json",
        data: JSON.stringify(teamObject),
        success: function () {
            // Reload the team select box
            loadTeamSelectBox();

            // Pop up the site create modal
            $('#createSiteModal').foundation('reveal', 'open');
        },
        error: ajaxErrorHandler
    });
});

Ich habe sie in Fiddler beobachtet und der Unterschied zwischen Arbeiten (Chrome) und Nicht-Arbeiten (Firefox) besteht darin, dass der HTTP-PUT in Chrome ausgelöst wird und nicht in Firefox ausgelöst wird.

Jetzt weiß ich, dass jQuery.ajax PUT nicht in allen Browsern garantiert ist.

ich habe gelesen

Sind die Methoden PUT, DELETE, HEAD usw. in den meisten Webbrowsern verfügbar?http://annevankesteren.nl/2007/10/http-method-support

Diese Websites bestätigen erneut, dass PUT möglicherweise nicht in allen Browsern funktioniert, aber in FF funktionieren sollte.

Zum Schluss habe ich folgendes mit FF21 getroffen und PUT funktioniert

http://www.mnot.net/javascript/xmlhttprequest/

Ich könnte das sicherlich umgehen, aber es scheint mir, dass dies funktionieren sollte. Ich würde lieber nicht etwas jerry-riggen, sondern jQuery's .ajax zum Laufen bringen.

Weitere Details: * jQuery Version 2.0.0 * Backend ist Spring3

[Bearbeiten, um den HTML-Code hinzuzufügen]

Antworten auf die Frage(4)

Ihre Antwort auf die Frage