如何从json调用服务器端函数

How to call server side function from json?

本文关键字:服务器端 函数 调用 json      更新时间:2023-09-26

这是我的代码

<script type="text/JavaScript">
     var myarray = new array();
     function getsvg1() {
         $.ajax({
         alert("hello");
             type: "post",
             url: "WebForm1.aspx/getsvg1",
             alert("abc");
             contentType: "application/json; charset=utf-8",
             dataType: "json",
             success: function (response) {
                 var cars = response.d;
                 alert(cars);
                 alert("hi");
             },
             failure: function (msg) {
                 $('#output').text(msg);
             }
         });
    }
</SCRIPT>

webservices

  [System.Web.Services.WebMethod]
  public static ArrayList getsvg1()
    {
        XDocument doc =        XDocument.Load(System.Web.HttpContext.Current.Server.MapPath("~/NewFolder1/10000.svg"));
        //XDocument doc = XDocument.Load(System.Web.HttpContext.Current.Server.MapPath("~/Uploads/Orders/100001_PRO/2/svg0.svg"));
        //XNamespace ns1 = "http://www.w3.org/2000/svg";
        //Namespace of a root element can also be retrieved like this:
        //XNamespace ns1 = doc.Root.GetDefaultNamespace();
        //var g = doc.Descendants(ns1 + "image").FirstOrDefault();
        // XDocument doc = XDocument.Load(Server.MapPath("~/excelfiles/svg0.svg"));
        XNamespace ns1 = "http://www.w3.org/2000/svg";
        //Namespace of a root element can also be retrieved like this:
        //XNamespace ns1 = doc.Root.GetDefaultNamespace();
        var retrieveimage = doc.Descendants(ns1 + "image").FirstOrDefault();
        var retrivetext = doc.Descendants(ns1 + "g").FirstOrDefault();
        ArrayList arlelem = new ArrayList();
        foreach (XElement element in doc.Descendants(ns1 + "g"))
        {
            //string[] parts = element.Split(',');
            Console.WriteLine(element);
            arlelem.Add(element);
        }
        // var retrivetext1 = doc.Descendants(ns1 + "text").SelectMany(i => i.ElementExtensions.Select(e => e.GetObject<XElement>().Attribute("url").Value)).ToArray();
        //var retrivetext = doc.Descendants(ns1 + "text").All();
        string v = arlelem[1].ToString();
        string values = retrieveimage.ToString();
        string values1 = retrivetext.ToString();
        char[] delimiterChars1 = { ' ', ',', '"', '''', ''t', '=' };
        //string text = "one'ttwo three:four,five six seven";
        //System.Console.WriteLine("Original text: '{0}'", text);

        string[] words = values.Split(delimiterChars1);
        string[] words2 = values1.Split(delimiterChars1);
        string[] newword = v.Split(delimiterChars1);
        //Session["newimgwidth"] = words[15];
        return arlelem;
    }

alert不指向汽车的值,断点不指向成功和失败。在这个例子中,我调用服务器端函数Json函数result

首先,您的ajax请求充满了语法错误。

  1. $。ajax({})块中不能有alert("hello");
  2. 删除警报("abc");太
  3. 在你的成功方法中使用console.log()代替警报,这不是一个错误,而是一个建议/建议。
  4. 你的方法在错误的情况下返回什么?在你的ajax错误方法中,它似乎期望一个字符串值。
  5. 当你不向你的方法发布任何数据时,你为什么使用type: "post" ?使用'get'代替。
  6. 调试你的服务器端代码,尝试打开WebForm1.aspx/getsvg1 url在你的浏览器窗口,看看你是否得到预期的响应。如果一切正常,接下来尝试使用客户端(如postman rest客户端)发送ajax请求来再次检查响应。

你可以使用jQuery:

$.getJSON( "http://server.com/webservice", function( data ) {
   console.log(JSON.stringify(data));
}

查看更多详细信息:http://api.jquery.com/jquery.getJSON/

{key,value }它允许json数据。意味着已经可用的选项或新定义的json值。你可以进入,如果你尝试alert("hello")它不允许。所以它停止了。所以,试着不带警告信息使用括号{}