如何从asp.net / jQuery.ajax POST获取URL参数?

时间:2009-04-10 22:29:38

标签: asp.net web-services post jquery

我试图弄清楚如何从我正在使用的jQuery插件中获取URL中传递的参数。基本上,我正在向我的Web服务发送POST ajax请求并尝试使用URL参数,但它们总是无效返回。我假设这与我在POST中的事实有关。

任何人都可以为我提供一些有关如何实现这一目标的见解吗?

6 个答案:

答案 0 :(得分:1)

我不确定你为什么选择在AJAX调用上使用查询字符串参数。除非有非常具体的原因,否则您应该将它们作为参数发布到您的Web服务方法中。

答案 1 :(得分:0)

您好我正在使用jQuery jqGrid插件,默认情况下它会向网址发布5或6个参数。我在查看这些参数时遇到了麻烦,从查看一些php示例中,它显示了从Form变量中获取参数的方法......我只是想看看是否有办法可以做到这一点。我会看到我可以做些什么来发布它们作为参数。 。 。只是为了咯咯笑,有没有办法,我会或可以做到这一点?

答案 2 :(得分:0)

for ASP.NET ....

您可以使用POST

获取Request["paramName"];参数

如果您使用带有查询字符串参数的GET请求,那么

Request.QueryString["paramName"];

答案 3 :(得分:0)

我遇到了类似的问题。

我正在使用jQuery / json和POST回C#/ Webservice。我不知道如何读取我创建的json变量。

这是客户端(在用户控件上):

<script type="text/javascript" language="javascript">
    function DoLogin() 
    {
        var un = document.getElementById('UserNameText').value;
        var pw = document.getElementById('PasswordText').value;
        var info = "{ 'UserName':'" + un + "', 'Password':'" + pw + "'}";

        $.ajax(
        {
            type: "POST",
            url: "http://localhost:60876/Sitefinity/Services/Login/Login.asmx/LoginSpecial",
            dataType: 'json',
            data: info,
            contentType: "application/json; charset=utf-8",
            success: function (msg) { alert(msg.d); },
            error: function (msg) { alert(msg.responseText); }
        });
    }
</script>

这是网络服务方面:

    [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]
    public class Login : System.Web.Services.WebService
    {
        [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
        [WebMethod]
        public string LoginSpecial()
        {
            // read the json variables: UserName, Password.

            string un = HttpContext.Current.Request["UserName"] != null ? HttpContext.Current.Request["UserName"].ToString() : String.Empty;
            // the previous isn't working for some reason.

            return "Some message here";
        }
    }

我正在访问网络服务,但我需要json的用户名/密码进行一些验证。

答案 4 :(得分:0)

如果你正在使用asp.net WebForms,我建议使用ScriptManager为你的web服务生成一个javascript代理,然后使用该javascript代理而不是手动进行ajax调用。以下是使用ScriptManager和Web服务的快速教程/演练:http://msdn.microsoft.com/en-us/magazine/cc163354.aspx

大致像这样:

// in html you have this
<script src="WebService.asmx/jsdebug" type="text/javascript"></script>

// csharp web-service like this
[WebMethod]
public int Add(int a, int b) { return a + b; } 


// further javascript to call it
function CallAdd()
{
    // method will return immediately
    // processing done asynchronously
    WebService.Add(0,6, OnMethodSucceeded, OnMethodFailed);
}

这应该消除了通过query-string发布参数的需要,这通常在soap环境中不受支持,因为服务需要格式良好的soap消息。

答案 5 :(得分:0)

string parameter = HttpUtility.ParseQueryString(HttpContext.Current.Request.UrlReferrer.Query).Get("param1");