jquery ajax传递参数给webservice

问题描述 投票:0回答:1

我必须在 Web 服务中运行,其中一个可以正确接收两个参数,我可以执行它,但另一个也接收参数的函数无法正常工作,请粘贴此函数和我的 Ajax 代码,以便您可以帮助我查看发生了什么。

html

<script type="text/javascript">
    function CallService() {
        $.ajax({
            type: "POST",
            url: "findMe.asmx/locateMe2",  
            crossDomain:true,
            data: '{value1: ' + $("#txtValue1").val() + ', value2: ' + $("#txtValue2").val() + '}',
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: OnSuccess,
            error: OnError
        });

    }

    function OnSuccess(data, status) {
        $("#lblResult").html(data.d);

    }

    function OnError(request, status, error) {
        $("#lblResult").html(request.statusText);

    }


</script>    

</head>
<body>
<form id="frmCoords" runat ="server" >
    <div>
<table>
    <tbody>
        <tr>
            <th>
                Value 1:
            </th>
            <td>
                <asp:TextBox ID="txtValue1" runat="server" />
            </td>
        </tr>
        <tr>
            <th>
                Value 2:
            </th>
            <td>
                <asp:TextBox ID="txtValue2" runat="server" />
            </td>
        </tr>
    </tbody>
</table>

<asp:Button ID="btnGo" Text="Go" OnClientClick="CallService(); return false;" runat="server" />

<asp:Label ID="lblResult" Text="&nbsp;" Width="100%" runat="server" ForeColor="black"  />
    </div>

</form>


--webservice
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
// To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. 
[System.Web.Script.Services.ScriptService]


    [WebMethod]
    [ScriptMethod(ResponseFormat = ResponseFormat.Json)]

    public int Add(int value1, int value2)
    {
        return value1 + value2;
    }

    public string locateMe2(Double value1, Double value2)
    {

        FormClosingEventArgs ee = new FormClosingEventArgs(CloseReason.UserClosing, false);
        DialogResult dlgResult = MessageBox.Show("", "Cadena", MessageBoxButtons.OK, MessageBoxIcon.Information);

        SqlConnection Conn = new SqlConnection();
        Conn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["Audi.Properties.Settings.ConexionSql"].ConnectionString);
        string procedure = "usp_PointInPolygon";

        SqlCommand cmd = new SqlCommand(procedure, Conn);
        SqlDataReader reader;


        //cmd.CommandText = "usp_PointInPolygon";
        cmd.CommandType = CommandType.StoredProcedure;
        //cmd.Parameters.Clear();
        SqlParameter param1;
        SqlParameter param2;
        param1 = cmd.Parameters.Add("@lat", SqlDbType.Float,14);
        param2 = cmd.Parameters.Add("@lng", SqlDbType.Float,14);

        param1.Value = value1;
        param2.Value = value2;

        Conn.Open();

        reader = cmd.ExecuteReader();
        string column = "";
        while (reader.Read())
        {
            column = reader["county"].ToString();
            //int columnValue = Convert.ToInt32(reader["ColumnName"]);
        }
        Conn.Close();

        return column;

    }

函数 Add 工作正常,它接收两个 int 值,函数locateMe2 也接收 lat 和 lng 以及浮点数的值,但不起作用,你看到什么问题了吗?

the locateMe2 function will return just a string
jquery ajax web-services
1个回答
0
投票
var params = {value1: $("#txtValue1").val(), value2: $("#txtValue2").val()};
function CallService() {
  $.ajax({
        type: "POST",
        url: "findMe.asmx/locateMe2",  
        crossDomain:true,
        data: JSON.stringify(params),
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: OnSuccess,
        error: OnError
    });
}

值可以直接作为字符串放在“数据”设置中,在ajax方法之外设置值有助于在从变量或元素获取值时特别监视您正在编写的内容,而“stringify”方法有助于将值放入字符串形状因为这是需要的。

© www.soinside.com 2019 - 2024. All rights reserved.