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     
        }); 

我的另一个相关紧急问题Chinese Character 没有出现。和这个类似,如果有的话,请看一下。

更新:
请阅读文档的这一部分,(ctr+f,跳转到“processData”)。
我认为我的数据已经是一个查询字符串,所以我忽略了选项:processData。文档说:“如果要发送 DOMDocument 或其他未处理的数据,请将此选项设置为 false。” 但我的soapRequest_add_a_new_story_to_db不是 DOMDocument。“未处理”数据的定义是什么?请给出解释和相关参考文件。

4

1 回答 1

1

In your ajax call you have to prevent the processing of your data. You basically tell jquery: "don't touch my request and response data I know what I'm doing." The data in your request var is a valid soap message as is, so you want to prevent that jquery tries to convert it (which it will do for json or xml data).

  $.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 回答