132

私は次の Jquery コールバック関数を持っていますが、少し疑問があります (Jquery についてはよくわかりません)。

$("form.readXmlForm").submit(function() {
    // Riferimento all'elemento form che ha scatenato il submit 
    var form = $(this);
    // Variabile che contiene il riferimento al bottone clickato 
    var button = form.children(":first");

    $.ajax({        // Viene eseguita la chiamata AJAX 
        type: "POST", // Tipo di richiesta: POST 
        // URL verso quale viene inviata la richiesta
        url: form.attr("action"),    
        // Dati XML inviati: 
        data: "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><javaBean><foo>bar</foo><fruit>apple</fruit></javaBean>", 
        // Tipo di media type accettabile dalla response: 
        contentType: "application/xml", 
        dataType: "text", 

        success: function(text) { 
            MvcUtil.showSuccessResponse(text, button); 
        }, 

        error: function(xhr) { 
            MvcUtil.showErrorResponse(xhr.responseText, button); 
        }
    });

ご覧のとおり、この関数は単にバックエンドに対して AJAX リクエストを実行し、このリクエストのパラメーターを設定します。

リクエストを URL に送信すること、リクエストが POST リクエストであること、送信するデータが次の文字列であることを設定しました。

「バアップル」

contentTypedataTypeの違いを理解するのが難しい

contentTypeは、HTTP レスポンスで受け取ることができるデータのタイプを指定していると思いますが、正しいですか?

そしてデータ型?何を言います?HTTP リクエストで送信するデータのタイプは?

この場合は、XML コードを表すテキスト文字列を送信しているため、「テキスト」ですか?

4

2 に答える 2

186

ドキュメントから:

contentType (デフォルト: 'application/x-www-form-urlencoded; charset=UTF-8')

タイプ: 文字列

サーバーにデータを送信する場合は、このコンテンツ タイプを使用します。デフォルトは「application/x-www-form-urlencoded; charset=UTF-8」で、ほとんどの場合はこれで問題ありません。content-type を $.ajax() に明示的に渡すと、(データが送信されなくても) 常にサーバーに送信されます。文字セットが指定されていない場合、データはサーバーのデフォルトの文字セットを使用してサーバーに送信されます。サーバー側でこれを適切にデコードする必要があります。

と:

dataType (デフォルト: Intelligent Guess (xml、json、script、または html))

タイプ: 文字列

サーバーから返されることを期待しているデータのタイプ。何も指定されていない場合、jQuery は応答の MIME タイプに基づいてそれを推測しようとします (XML MIME タイプは XML を生成し、1.4 では JSON は JavaScript オブジェクトを生成し、1.4 ではスクリプトがスクリプトを実行します。文字列として返されます)。

それらは本質的に、あなたが思っていたものとは正反対です。

于 2013-01-14T16:59:38.823 に答える