如何从json调用服务器端功能?

时间:2014-08-13 05:06:12

标签: javascript jquery asp.net ajax json

这是我的代码

<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>

web服务

  [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;
    }
对于汽车价值和断点而言,警报并非出现成功和失败。在这个例子中,我从中调用服务器端功能 json那个功能结果

3 个答案:

答案 0 :(得分:0)

开始使用ajax请求时会出现语法错误。

  1. $ .ajax({})块内不能有alert("hello");
  2. 删除提醒(“abc”);太
  3. 在您的成功方法中使用console.log()而不是警报,这不是错误之一,而是建议/建议。
  4. 如果出错,您的方法是什么?在你的ajax错误方法中,似乎期待一个字符串值。
  5. 当您未向方法发布任何数据时,为什么使用type: "post"?改为使用'get'。
  6. 要调试服务器端代码,请尝试在浏览器窗口中打开WebForm1.aspx/getsvg1网址,看看是否获得了预期的响应。如果一切顺利,请尝试使用postman rest client之类的客户端发送ajax请求,以便再次检查响应。
  7. 希望这有帮助。

答案 1 :(得分:0)

你可以使用jQuery:

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

详情请见:http://api.jquery.com/jquery.getJSON/

答案 2 :(得分:0)

{key,value }它允许json data.means只有可用的选项或新的定义json值。您可以输入,如果您尝试alert("hello")它最好允许。所以它已停止。所以,请尝试在括号{}内使用警报消息。