简体   繁体   中英

Javascript send Json Data

How to send json string via ajax and convert json string to xml?

Error: Failed to load resource: the server responded with a status of 500 (Internal Server Error)

$.ajax({
                async: true,
                url: "WebForm1.aspx/btnSave",
                type: "POST",
                data: "{data: '" + "{'?xml': {'@version': '1.0'},'Card': { 'Main_Client_Information': {'Surname': '','Name': '','Middle_name': '','Full_name': '','Short_name': '','RNN': '','IIN': '','Birthday': '','Doc_Type': {'@code': ''}}}}" + "'}",
                dataType: "json",
                contentType: "application/json; charset=utf-8",
                success: function (response) {
                    alert(response.d);
                },
                error: function (error) {
                    debugger;
                    alert(error);
                }
            });

if send $.ajax data: '{data: "something"} - work perfect, how to put " json like string " instead "something"

WebForm.aspx.cs

[System.Web.Services.WebMethod]
    public static string btnSave(string data)
    {

        string response = "";

        try
        {

            XmlDocument xmlDocument = (XmlDocument)JsonConvert.DeserializeXmlNode(data);

            xmlDocument.Save(Server.MapPath("output.xml"));

            response = "success";

        }
        catch (Exception ex)
        {
            response = "error" + ex.Message;
        }

        return response;

    }

I just want get this string ---------> "{'?xml': {'@version': '1.0'},'Card': { 'Main_Client_Information': {'Surname': '','Name': '','Middle_name': '','Full_name': '','Short_name': '','RNN': '','IIN': '','Birthday': '','Doc_Type': {'@code': ''}}}}" + "'}" ------------ in webmethod btnSave and convert it to xml format

the problem lies in the way you are telling jQuery which data to post :

You probably got confused, since the parameter passed on to $.ajax has a property named data . You are now passing a string right into there, while you should be passing a Json dictionary which contains which variable names and values you want to send.

try this :

Your entire call should look something like this :

(i'm keeping the data you are trying to send in a separate variable for clarity)

var stringData ="{'?xml' : '@version': '1.0'},'Card': { 'Main_Client_Information': {'Surname': '','Name': '','Middle_name': '','Full_name': '','Short_name': '','RNN': '','IIN': '','Birthday': '','Doc_Type': {'@code': ''}}}}";

$.ajax({
    async: true,
    url: "WebForm1.aspx/btnSave",
    type: "POST",
    data: {data:stringData},
    dataType: "json",
    contentType: "application/json; charset=utf-8",
    success: function (response) {
        alert(response.d);
    },
    error: function (error) {
        debugger;
        alert(error);
    }
});  

You can't send the data as the json string. You need to call JSON.parse (json_string_here_).

It is also possie that you might need put instead of post, but i cant be sure of that because i dont know if you are doing an insert or update.

Sorry, even after that ive got to say that id be a little more than impressed if you can send an xml file like that. I would imagine that doesnt work very well.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM