jQueryを介してWebメソッドを実行しようとしていますが、カスケード接続のDropboxのペアの内容に基づいてSQLデータベースを照会します。私はメソッドを呼び出して、さまざまなjQueryを使用して結果を取得しようとしましたが、UpdatePanelを使用して1つのポイントで動作させようとしましたが、それぞれの試みの最後に、同じポイントに残っているように見えますただし、最終ラベルテキストに渡される結果文字列は空白です。WebMethodからjQueryの空白の結果
私はWebMethod属性では非常に初歩的な何かを逃したし、誰もが正しい方向に私を指すことができれば疑問に思っていることが推測している:
ターゲット表を、ドライバと呼ばれる、データベース内の4つの列があります。
をは、ddlModel.SelectedItem.Valueであるべきである整数、MODEL_ID
モデル、ddlModel.SelectedItem.Textされるべきではvarchar(255)、
ドライバは整数です(ビットは試されましたが、問題に影響はありません。レコード作成ページを正しく実行するためにinterが使用されています)。サブフィールドを使用するかどうかを定義する1または0ドライバーは0
であれば、私は彼らが表示されるカスケードドロップダウンボックスを移入するために使用されるテーブルを詳細に説明していないデータは、結果文字列に追加する含まれている結果の文字列
潜水艦、VARCHAR(255)、この機能やその他の情報が必要な場合は、お気軽にお問い合わせください。
次のように私のコードは次のとおりです。お時間を
printers.asmx.vb
Imports System.Web
Imports System.Web.Services
Imports System.Web.Services.Protocols
Imports System.Collections
Imports System.Collections.Generic
Imports System.Collections.Specialized
Imports AjaxControlToolkit
Imports System.Data
Imports System.Data.SqlClient
Imports System.Configuration
<WebService(Namespace:="http://printers.mydomainname.com/")> _
<WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile1_1)> _
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
<System.Web.Script.Services.ScriptService()> _
Public Class printers
Inherits System.Web.Services.WebService
<WebMethod()> _
Public Function GetMake(ByVal knownCategoryValues As String, ByVal category As String) As CascadingDropDownNameValue()
Dim strConnection As String = ConfigurationManager.ConnectionStrings("PrinterConnection").ConnectionString
Dim sqlConn As SqlConnection = New SqlConnection(strConnection)
Dim strMakeQuery As String = "SELECT * FROM manufacturers ORDER BY make ASC"
Dim cmdFetchMake As SqlCommand = New SqlCommand(strMakeQuery, sqlConn)
Dim dtrMake As SqlDataReader
Dim myMake As New List(Of CascadingDropDownNameValue)
sqlConn.Open()
dtrMake = cmdFetchMake.ExecuteReader
While dtrMake.Read()
Dim strMakeName As String = dtrMake("make").ToString
Dim strMakeId As String = dtrMake("make_id").ToString
myMake.Add(New CascadingDropDownNameValue(strMakeName, strMakeId))
End While
Return myMake.ToArray
End Function
<WebMethod()> _
Public Function GetModel(ByVal knownCategoryValues As String, ByVal category As String) As CascadingDropDownNameValue()
Dim strConnection As String = ConfigurationManager.ConnectionStrings("PrinterConnection").ConnectionString
Dim sqlConn As SqlConnection = New SqlConnection(strConnection)
Dim strModelQuery As String = "SELECT * FROM printers WHERE make_id = @makeid"
Dim cmdFetchModel As SqlCommand = New SqlCommand(strModelQuery, sqlConn)
Dim dtrModel As SqlDataReader
Dim kvModel As StringDictionary = CascadingDropDown.ParseKnownCategoryValuesString(knownCategoryValues)
Dim intMakeId As Integer
If Not kvModel.ContainsKey("make") Or Not Int32.TryParse(kvModel("make"), intMakeId) Then
Return Nothing
End If
cmdFetchModel.Parameters.AddWithValue("@makeid", intMakeId)
Dim myModel As New List(Of CascadingDropDownNameValue)
sqlConn.Open()
dtrModel = cmdFetchModel.ExecuteReader
While dtrModel.Read()
Dim strModelName As String = dtrModel("model").ToString
Dim strModelId As String = dtrModel("model_id").ToString
myModel.Add(New CascadingDropDownNameValue(strModelName, strModelId))
End While
Return myModel.ToArray
End Function
<WebMethod()> _
Public Function GetDriver(ByVal model As String) As String
Dim strConnection As String = ConfigurationManager.ConnectionStrings("PrinterConnection").ConnectionString
Dim sqlConn As SqlConnection = New SqlConnection(strConnection)
Dim strDriverQuery As String = "SELECT * FROM drivers WHERE model = @model"
Dim cmdFetchDriver As SqlCommand = New SqlCommand(strDriverQuery, sqlConn)
Dim dtrDriver As SqlDataReader
Dim intModel As Integer
cmdFetchDriver.Parameters.AddWithValue("@model", intModel)
Dim strResult As String = "The selected printer is"
sqlConn.Open()
dtrDriver = cmdFetchDriver.ExecuteReader
dtrDriver.Read()
Dim intDriver As Integer = dtrDriver("driver")
Dim strSubs As String = dtrDriver("subs").ToString
If intDriver = 1 Then
strResult = strResult + "fully compatible with the Windows 2003 Hosted platform."
Else
strResult = strResult + "supported on the Windows 2003 Hosted platform via a subsituted driver:" + strSubs
End If
Return strResult
End Function
End Class
default.aspxを
<%@ Page Language="VB" AutoEventWireup="false" EnableEventValidation="false" Inherits="Printer_Compatibility_Matrix_VB._Default" Codebehind="Default.aspx.vb" %>
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="cc1" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
<title>Printer Compatibility Matrix</title>
<script src="jquery-1.4.4.min.js" type="text/javascript"></script>
<script language="javascript" type="text/javascript">
function CallService() {
$.ajax({
type: "POST",
url: "printers.asmx/GetDriver",
data: $("#ddlModel option:selected").text(),
contentType: "application/json; charset=utf-8",
dataType: "json",
success: OnSuccess,
error: OnError
});
}
function OnSuccess(data, status) {
$("#lblResult").html(data.d);
}
function OnError(request, status, error) {
$("#lblResult").html(request.statusText);
}
</script>
</head>
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods = "true">
<Services>
<asp:ServiceReference Path="printers.asmx" />
</Services>
</asp:ScriptManager>
<div>
Manufacturer: <asp:DropDownList ID="ddlMake" runat="server" Width="170" /><br />
Printer: <asp:DropDownList ID="ddlModel" runat="server" Width="170" /><br />
<asp:Button ID="btnDriver" Text="Submit" OnClientClick="CallService(); return false;" runat="server" />
<asp:Label ID="lblResult" Text=" " Width="100%" runat="server" />
<cc1:CascadingDropDown
id="CascadingDropDown1"
runat="server"
category="Make"
prompttext="Select a Manufacturer..."
ServiceMethod="GetMake"
ServicePath="printers.asmx"
TargetControlId="ddlMake"
/>
<cc1:CascadingDropDown
id="CascadingDropDown2"
runat="server"
category="Model"
prompttext="Select a Printer..."
ServiceMethod="GetModel"
ServicePath="printers.asmx"
TargetControlId="ddlModel"
ParentControlId="ddlMake"
/>
</div>
</form>
</body>
</html>
多くのおかげで、
ジム
EDIT
フレデリックによって発見エラーに加えて、私はjQueryのを参照するためにもを忘れていたことが表示されます、私はこれらのエラーに基づいて、私の現在の繰り返しに一致するように上記のコードを修正しています。
現在、ラベルテキストに「内部サーバーエラー」が返されます。私は、このコードで単純な 'Hello World'を呼び出す試みでも、ラベルに空白の結果を返すので、これは私のjavaと関係があると思われます。