0

これが私の $.ajax() コードですが、うまくいきません。

フォームを contentType: から に変更した"text/xml ; ",**contentType: "text/xml ; charset=UTF-8",

リクエストが壊れています。ただし、公式ドキュメントapi/$.ajaxによると、そうする必要があります。そうしないと、文字セットがサーバーと同じになります。

var soapRequest_add_a_new_story_to_db=
'<?xml version="1.0" encoding="utf-8"?>'+
  '<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" '+
'xmlns:xsd="http://www.w3.org/2001/XMLSchema" '+
     'xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">'+
  '<soap:Body> '+
    '<AddNewStory xmlns="http://x.x.x.x/StoryForMac/">'+
  '<StoryID>'+story_id+'</StoryID>'+
  '<UserName>' +User_Name+ '</UserName>'+
  '<Story_CreateTime>'+Edit_Time+'</Story_CreateTime>'+
  '<StoryName>'+Story_Name+'</StoryName>'+
'</AddNewStory>'+
'</soap:Body>'+
'</soap:Envelope>'; 



        $.ajax({
            type: "POST",
            url: webServiceAddNewStoryToDbUrl,
            contentType: "text/xml ; charset=UTF-8",
            dataType: "xml",    
            data: soapRequest_add_a_new_story_to_db,        
            success: processSuccess,        //If the SOAP connection sucessess, the function: processSuccess() will be called.  
            error: processError     
        }); 

私の別の関連する緊急の問題漢字が表示されません。これに似たものがあります。もしあれば、見てください。

更新: ドキュメントのこの部分を
読んでください(ctr+f、「processData」にジャンプ)。 オプション:processData を無視するように、データは既にクエリ文字列になっていると思います。ドキュメントには、「DOMDocument またはその他の未処理データを送信する場合は、このオプションを false に設定してください」と記載されています。しかし、私のsoapRequest_add_a_new_story_to_dbは DOMDocument ではありません。また、「未処理」データの定義は何ですか? 説明と関連する参考文献を教えてください。

4

1 に答える 1

1

ajax 呼び出しでは、データの処理を防止する必要があります。あなたは基本的に jquery にこう伝えます: リクエスト var 内のデータはそのまま有効な SOAP メッセージであるため、jquery がそれを変換しようとしないようにする必要があります (これは json または xml データに対して行われます)。

  $.ajax({
        type: "POST",
        url: webServiceAddNewStoryToDbUrl,
        contentType: "text/xml; charset=\"UTF-8\"",
        dataType: "xml",   
        processData: false, 
        data: soapRequest_add_a_new_story_to_db,        
        success: processSuccess, //If the SOAP connection sucessess, the function: processSuccess() will be called.  
        error: processError     
    }); 
于 2012-11-17T11:37:35.297 に答える