首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在JavaScript方法中调用C#方法

如何在JavaScript方法中调用C#方法
EN

Stack Overflow用户
提问于 2018-08-29 03:44:33
回答 2查看 0关注 0票数 0

我在Javascript中调用C#方法时遇到了麻烦。我正在使用Framework 2.0和Asp.net WebForms。我根本无法让它在C#中调用该函数。这是我的代码:

代码语言:javascript
复制
[WebMethod]
public static List<string> GetMarkers()
{
    List<string> markers = new List<string>();
    string path = @"C:\Users\Utilizador\Desktop\PlaceMarks.xml";
    XmlDocument xml = new XmlDocument();
    xml.Load(path);

    XmlNodeList elemList = xml.GetElementsByTagName("Placemark");
    string name = string.Empty;
    string longi = string.Empty;
    string lat = string.Empty;
    string join;
    foreach (XmlNode elements in elemList)
    {
        //Marker marker = new Marker();
        name = elements["description"].InnerText;
        longi = elements["LookAt"].ChildNodes[0].InnerText;
        lat = elements["LookAt"].ChildNodes[1].InnerText;
        join = string.Format(name, longi, lat);

        markers.Add(join);
    }

    return markers;
}

protected void Button1_Click(object sender, EventArgs e)
{

}

这是我正在使用的xml(示例)

代码语言:javascript
复制
<Placemark id="pmID_01895782-3191-412e-8495-6ed551d19b52">
    <name>Buraco no pavimento</name>
    <description>
        <![CDATA[<b>Morada: </b>Avenida Fialho de Almeida 47, 7800 Beja, Portugal<br /><b>Categoria: </b>Conservação das Ruas e Pavimento<br /><b>Assunto: </b>Buraco no pavimento]]>
    </description>
    <LookAt>
        <longitude>-7.8649591</longitude>
        <latitude>38.0071425</latitude>
        <altitude>0</altitude>
        <range/>
        <tilt>0</tilt>
        <heading/>
        <altitudeMode>relativeToGround</altitudeMode>
    </LookAt>
    <styleUrl>#smID_d0a732ef-461d-406b-86b7-cc88cefcf09c</styleUrl>
    <Point>
        <coordinates>-7.8649591,38.0071425</coordinates>
    </Point>
</Placemark>

这是我的javascript代码:

代码语言:javascript
复制
<script type="text/javascript">

    function getEmployees() {
        $.ajax({
            type: "GET",
            url: 'CS.aspx/GetMarkers',
            data: {},
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            beforeSend: function () {
                Show(); // Show loader icon  
            },
            success: function (response) {


            complete: function () {
                Hide(); // Hide loader icon  
            },
            failure: function (jqXHR, textStatus, errorThrown) {
                alert("HTTP Status: " + jqXHR.status + "; Error Text: " + jqXHR.responseText); // Display error message  
            }
        });
    }
</script>

你能帮我解决一下吗?也许我在代码中遗漏了一些东西。

EN

回答 2

Stack Overflow用户

发布于 2018-08-29 12:09:27

首先,您可能想要检查呼叫是否正在进入您的服务器。

1)查看开发工具中的“ 网络”选项卡

2)当您调用'CS.aspx / GetMarkers'时,网络中的响应是什么?

3)也许您正在点击服务器但不是正确的方式,或者您可能没有发送服务器所需的内容。

4)尝试在你的ajax调用中安慰你的成功方法中的响应。

希望这些技巧能以任何方式帮助您。

票数 0
EN

Stack Overflow用户

发布于 2018-08-29 13:06:35

使用此Ajax调用,因为您的c#代码是正确的: -

更多请参阅此内容

代码语言:javascript
复制
function getEmployees() {
    $.ajax({
        type: "Post",
        url: 'WebForm1.aspx/GetMarkers',
        data: {},
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        beforeSend: function () {
        },
        success: function (response) {
            alert(response)
        }
    });
}

**

测试示例请更新您的C#代码

**: -

代码语言:javascript
复制
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Xml;

namespace WebApplication8
{
    public partial class WebForm1 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }
        [WebMethod]
        public static List<string> GetMarkers()
        {
            List<string> markers = new List<string>();
            string path = @"D://test.xml";
            XmlDocument xml = new XmlDocument();
            xml.Load(path);

            XmlNodeList elemList = xml.GetElementsByTagName("Placemark");
            string name = string.Empty;
            string longi = string.Empty;
            string lat = string.Empty;
            string join;
            foreach (XmlNode elements in elemList)
            {
                //Marker marker = new Marker();
                name = elements["description"].InnerText;
                longi = elements["LookAt"].ChildNodes[0].InnerText;
                lat = elements["LookAt"].ChildNodes[1].InnerText;
                join = string.Format("{0}{1}{2}",name, longi, lat);

                markers.Add(join);
            }

            return markers;
        }
    }
}

更新您的Xml: -

代码语言:javascript
复制
<Placemark id="pmID_01895782-3191-412e-8495-6ed551d19b52">
        <name>Buraco no pavimento</name>
        <description>
        </description>
        <LookAt>
            <longitude>-7.8649591</longitude>
            <latitude>38.0071425</latitude>
            <altitude>0</altitude>
            <range/>
            <tilt>0</tilt>
            <heading/>
            <altitudeMode>relativeToGround</altitudeMode>
        </LookAt>
        <styleUrl>#smID_d0a732ef-461d-406b-86b7-cc88cefcf09c</styleUrl>
        <Point>
            <coordinates>-7.8649591,38.0071425</coordinates>
        </Point>
    </Placemark>

Aspx文件: -

代码语言:javascript
复制
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebApplication8.WebForm1" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <title></title>
</head>
<body>

    <script type="text/javascript">
        $(document).ready(function(){
            getEmployees()
        });

        function displayresults(data) {
            var datamerge = data
            var datadisplay = "";
            for (var display in datamerge)
            {
                datadisplay += datamerge[display];
            }
            alert(datadisplay)

        }
        function callcheck(){}
    function getEmployees() {
        $.ajax({
            type: "Post",
            url: "WebForm1.aspx/GetMarkers",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            beforeSend: function () {
            },
            success: function (response) {
                displayresults(response)
            },

            failure: function (response) {

                alert(response.d);

            }
        });
    }
</script>
    <form id="form1" runat="server">
    <div>

    </div>
    </form>
</body>
</html>

InCase如果您的控件中没有XML删除或替换CData这样的方式请参阅此

代码语言:javascript
复制
xml.innerText = xml.innerText.Replace("![CDATA[","").Replace("]]","");
xmlDoc.Save();// xmlDoc is your xml document
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100002477

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档