Jquery 为什么AJAX客户端不调用图像处理程序?

Jquery 为什么AJAX客户端不调用图像处理程序?,jquery,asp.net,ajax,vb.net,image,Jquery,Asp.net,Ajax,Vb.net,Image,请参阅下面的代码: Public Class Default4 Inherits System.Web.UI.Page Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load Dim image1 As Image = Default4.GetSQLTable OtherBits.Controls.Add(image1

请参阅下面的代码:

Public Class Default4
    Inherits System.Web.UI.Page

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Dim image1 As Image = Default4.GetSQLTable
        OtherBits.Controls.Add(image1)
    End Sub

    <System.Web.Services.WebMethod()> _
    Public Shared Function GetSQLTable() As Image
        Dim Image1 As New Microsoft.Web.GeneratedImage
        Image1.ImageHandlerUrl = "ImageHandler1.ashx?id=1"
        Return Image1
    End Function

End Class
代码运行后,网页上有一个图像,其他位是占位符

我希望使用AJAX在客户端检索图像,即AJAX将调用函数get SQL table,该函数调用图像处理程序。以下是客户端代码:

<%@ Page Title="" Language="vb" AutoEventWireup="false" MasterPageFile="~/LGMaster.master" CodeBehind="Default4.aspx.vb" Inherits="com.app.PresentationLayer.Web.Default4" %>
<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">




     <script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.11.1.min.js"></script>
    <script type = "text/javascript">

        function GetSQLTable() {
                $.ajax({
                    type: "POST",
                    url: "Default4.aspx/GetSQLTable",
                    contentType: "application/json; charset=utf-8",
                    dataType: "json",
                    success: OnSuccess(),
                    failure: function (response) {
                        alert('there was an error loading the webpage')
                    }
                });
            function OnSuccess() {
                return function (response) {
                       document.getElementById('test_div').innerHTML = response.d;
                }
            }
        }
        window.onload = GetSQLTable
    </script> 

    </asp:Content>
    <asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
        <div id="test_div">
    </div>

        <asp:PlaceHolder runat="server" ID="OtherBits" />

    </asp:Content>

我在ImageHandler中放置了一个断点,可以确认如果客户机是AJAX,则不会调用该断点。为什么AJAX客户端不调用图像处理程序?将记录对映像处理程序的所有调用。我可以确认它肯定没有被调用。

我不确定,但我认为可能与共享函数的限制有关,正如我所说,我不确定 但您是否尝试在ASHX中创建图像,完全删除GetSQLTable并将ajax URL设置为:

url: "ImageHandler1.ashx?id=1",
而不是:

url: "Default4.aspx/GetSQLTable",

为什么需要GetSQLTable?

是否调用了AJAX请求?服务器的响应是什么?@David,谢谢。我在GetSQLTable服务器端函数中放置了一个断点。它被Ajax明确地称为。服务器端函数GetSQLTable未调用图像处理程序。我不确定Microsoft.Web.GenerateImage是什么,但我不希望此服务器端代码调用图像处理程序。这是否只是返回一些标记,然后浏览器将根据URL向图像处理程序发送请求?是否调用了OnSuccess客户端函数?你有什么反应?您是否按预期成功更新了标记?对不起,这是我的术语。图像在代码隐藏中创建并添加到占位符中。服务器端代码不会直接调用ImageHandler。此时,您将返回到客户端调试,其中不存在占位符之类的内容。您是否在客户端成功处理程序中进行过调试?您需要确保您的test_div元素的客户端标记正在以您期望的方式更新。