jquery ajax将参数传递给webservice

时间:2013-02-07 16:47:04

标签: jquery ajax web-services

我必须在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

1 个答案:

答案 0 :(得分:-1)

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”方法有助于将值放入字符串形状,因为它是必需的。