Jquery $.get、$.post、$.ajax、$(elm).加载到.ashx页面问题

Jquery $.get、$.post、$.ajax、$(elm).加载到.ashx页面问题,jquery,ashx,Jquery,Ashx,HTML页面 // in script tag $(document).ready(function () { var url = "list.ashx"; $.get(url + "?get", function (r1) { alert("get: " + r1); }); $.post(url + "?post", function (r2) { alert("post: " + r2); }); $.aja

HTML页面

    // in script tag
    $(document).ready(function () {
        var url = "list.ashx";

        $.get(url + "?get", function (r1) { alert("get: " + r1); });
        $.post(url + "?post", function (r2) { alert("post: " + r2); });
        $.ajax(url + "?ajax", function (r3) { alert("ajax: " + r3); });
        $("div:last").load(url + "?load", function (r4) { alert("load: " + r4); });
    });

    // in body tag
    <div></div>
结果

  • $.get和$.post reach list.ashx但是 不归
  • $.ajax未到达list.ashx
  • $。完全加载成功
问题是

  • 为什么只有“$.load”工作
  • 如何使$.get或$.post工作
更新

        $("input").click(function () {
            $.ajax({ url: url
                , context: this
                , data: "ajax=test"
                , cache: false
                , async: false
                , global: false
                , type:"POST"
                , processData: false
                , dataType: "html"
                , success: function (data) { alert(data); }
                , error: function (data) { alert(data.responseText); }
                });
        });

总是命中错误:function(){},但是'data.responseText'是正确的结果

由于您要在一次访问同一页面时发出四个异步请求,这可能与此相关:


嗯,您的
$.ajax()
不起作用的原因是因为它太简单了。它应该更像这样:

$.ajax({
    type: "POST", // or "GET"
    url: "list.ashx",
    data: "postvar=whatever",
    success: function(r3){
       alert("ajax: " + r3);
    }
});
此外,在使用
$.get
$.post
时,应将数据放入第二个参数中:

$.get(url, 'getvar=whatever', function (r1) { alert("get: " + r1); });
$.post(url, 'postvar=whatever', function (r2) { alert("post: " + r2); });

// or use a map

$.get(url, { getvar : 'whatever' }, function (r1) { alert("get: " + r1); });
$.post(url, { postvar : 'whatever' }, function (r2) { alert("post: " + r2); });

Firebug“net”选项卡或Chrome的资源跟踪器应该告诉您更多关于请求发生了什么。“$.ajax not reach list.ashx”这是因为您错误地调用了
ajax
:但不要担心,
get
post
只是它的包装,无论如何,您可以从实验中删除它。出于好奇,
$.get(url+“?load”,函数(r1){alert(“get:+r1”);}会发生什么情况?(注意我已经更改了查询字符串。)+1这是正确的,并最终解释了为什么
$.ajax
从未返回。谢谢,我尝试单独调用它们。结果是一样的。
$.get(url, 'getvar=whatever', function (r1) { alert("get: " + r1); });
$.post(url, 'postvar=whatever', function (r2) { alert("post: " + r2); });

// or use a map

$.get(url, { getvar : 'whatever' }, function (r1) { alert("get: " + r1); });
$.post(url, { postvar : 'whatever' }, function (r2) { alert("post: " + r2); });