如何以正确的方式在Asp.net中使用Jquery发布数据?

时间:2011-07-01 05:21:58

标签: jquery .net asp.net

我正在使用Jquery在aspx中发布表单数据。

我采用的方式是,我创建一个页面的表单和另一个aspx页面,我接收值,在其page_load中运行查询或其他逻辑。

我正在使用$.ajax jquery方法,但是如果发生某些异常或问题,它就无法正确响应并且预加载器继续工作。

请告诉我.Net中是否有任何支持方式,所以我可以正确使用这个jquery $ .ajax,或者我应该使用webservices或其他任何请让我知道,或者我可以调用c#函数后面的代码来自jquery $ .ajax? 谢谢 与Atif

4 个答案:

答案 0 :(得分:1)

   //the data you want to post
    var dataObject = JSON.stringify(reqObject); /// to use this you need json plugin link is posted below



    //Call the page method  
    $.ajax({
        async: false,
        type: "POST",
        url: youraspxPage + "/" + your code behind function name,
        contentType: "application/json;",
        data: dataObject,
        dataType: "json",
        success: ajaxCallSuccess,
        error: ajaxCallFailure
    });


function ajaxCallSuccess(response) {
    var msg1 = response.d;
}

function ajaxCallFailure(response) {
    var msg2 = response.d;
}

尝试这个让我知道它是否有效......

json plugin

see this

答案 1 :(得分:0)

额外的页面是不必要的。如果您想真正做ajax,可以在同一个类中发布ScriptMethod(http://msdn.microsoft.com/en-us/library/system.web.script.services.scriptmethodattribute.aspx)。这意味着您不需要连接所有与Aspx相关的其他内容。这种方法是在Asp.Net中进行ajax的良好开端。

答案 2 :(得分:0)

带有ajax的.apsx页面需要调用处理程序(.asxh)来获取值并处理它

您可以将处理程序放在一个位置或与调用它的aspx页面相同的位置

ajax将检索值并将其发送到hanlder,在处理数据的处理程序中,也可以将值传递给第一页上的ajax

(aspx页面)

//Call the page method  
$.ajax({
    type: "POST",
    url: myHandler.ashx,
    contentType: "application/json;",
    data: dataObject,
    dataType: "json",
    success: ajaxCallSuccess,
    error: ajaxCallFailure
});

(处理程序页面)

<%@ WebHandler Language="C#" Class="myHandler" %>
using System;
using System.Web;

public class myHandler : IHttpHandler 
{
    public void ProcessRequest(HttpContext context)
    {
        string strFname = string.empty;
        string strLname = string.empty;

        context.Response.ContentType = "application/json";

        if (!String.IsNullOrEmpty(context.Request.Form["FirstName"]))
        {
            strFname= Convert.ToString(context.Request.Form["FirstName"]);
        }
        if (!String.IsNullOrEmpty(context.Request.Form["LastName"]))
        {
            strLname = Convert.ToString(context.Request.Form["LastName"]);
        }

        context.Response.Write(HelloWorld(strFname, strLname));
    }

    public bool IsReusable
    {
        get { return false; }
    }

    public string HelloWorld(string fname, string lname)
    {
     return "Hello World, my name is " + fname + " " + lname;
    }
}

答案 3 :(得分:0)

jQuery的$.ajax()函数接受一个错误参数,如果请求因任何原因失败,将会调用该参数。

$.ajax({
   url: "someCommand.aspx",
   type: "POST",
   data: $("#myForm").serialize(),
   success: function(data){
       // display your data
   },
   error: funciton(){
       // handle error some way
   }
});

或者您可以处理个别错误,例如404,如果您需要具体,请执行以下操作:

$.ajax({
  url: "someCommand.aspx",
  type: "POST",
  data: $("#myForm").serialize(),
  success: function(data){
     // display your data
  },
  statusCode: {
    404: function() {
      alert('page not found');
    }
  }
});

最好的运气,戴夫