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元素的客户端标记正在以您期望的方式更新。