【发布时间】:2014-03-05 23:45:33
【问题描述】:
我有这个 jQuery 代码,它从表单提交运行并循环以将一定数量的记录插入到 SQL 表中。代码的 ajax 部分调用名为 Helpers.vbhtml 的 webmatrix 页面中的 VB 函数
function InsertSheeter()
{
var textDate = $('#textDate').val()
var Workorder = $('#textWorkorder').val()
var Material = $('#dropdownMaterial').val()
var Shift = $('#dropdownShift').val()
var Sheeter = $('#dropdownSheeter').val()
var FoilNum1 = $('#textFoilNum1').val()
var FoilNum2 = $('#textFoilNum2').val()
var FoilNum3 = $('#textFoilNum3').val()
var Printline = $('#dropdownPrintline').val()
var Section = $('#dropdownSection').val()
var Comments = $('#textComments').val()
var Employee = $('#dropdownEmployees').val()
var a = 0
while (a < Section)
{
switch (a)
{
case 0:
blockSection = "1"
break;
case 1:
blockSection = "2"
break;
case 2:
blockSection = "3"
break;
}
var str = {pDate: textDate, pSheeter: Sheeter, pShift: Shift,
pEmployee: Employee, pWorkorder: Workorder, pBlockSection: blockSection,
pComments: Comments, pFoilNum1: FoilNum1, pFoilNum2: FoilNum2,
pFoilNum3: FoilNum3, pPrintline: Printline, pMaterial: Material}
$.ajax(
{
type: "POST",
contentType: "application/json; charset=utf-8",
url: "Helpers.vbhtml/InsertSheeter",
data: JSON.stringify(str),
dataType: "json",
success: function(data)
{
OpenReports(Workorder, data.d)
},
error: function (xhr, errorType, exception) {
var errorMessage = exception || xhr.statusText;
alert(errorMessage);
}
});
a++;
}
}
这是被调用的 VB.NET 函数:
我根据我对文档的理解创建了一个使用 App_Code 目录中的 vbhtml 页面的 web 服务。这是我之前在本文中引用的 vb 代码 InsertSheeter 的 sn-p。
@Imports Microsoft.VisualBasic
@Imports System
@Imports System.Web
@Imports System.Web.Services
@Imports System.Xml.Serialization
@Functions
<System.Web.Script.Services.ScriptService()> _
<WebService(Namespace:="http://tempuri.org/")> _
<WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile1_1)>
<WebMethod>
Public Shared Function InsertSheeter(ByVal pDate As DateTime, ByVal pSheeter As String, ByVal pShift As String,
ByVal pEmployee As String, ByVal pWorkorder As String,
ByVal pBlockSection As String, ByVal pComments As String, ByVal pFoilNum1 As String,
ByVal pFoilNum2 As String, ByVal pFoilNum3 As String, ByVal pPrintline As String,
ByVal pMaterial As String) As String
Dim db As Database
db = Database.Open("Nomex")
Dim strQuery As String
Dim pBlockNumber As String
pBlockNumber = GetBlockNumber(pBlockSection, pWorkorder, pSheeter, pMaterial)
strQuery = "INSERT INTO dbo.NomexSheeter (SheeterDate, Sheeter, Shift, Employee, WorkOrder, BlockNumber, BlockSection, " _
& "Comments, FoilNum_1, FoilNum_2, FoilNum_3, PrintLine, Material) " _
& "VALUES (@0, @1, @2, @3, @4, " _
& "@5, @6, @7, @8, @9, @10, @11, @12)"
db.Execute(strQuery, pDate, pSheeter, pShift, pEmployee, pWorkorder, pBlockNumber, pBlockSection,
pComments, pFoilNum1, pFoilNum2, pFoilNum3, pPrintline, pMaterial)
db.Close
Return pBlockNumber
End Function
End Functions
调用 jQuery 函数 InsertSheeter() 后,我仍然收到 404 Forbidden 错误。我不明白我做错了什么。 Webmatrix 文档和在线帖子似乎支持这个想法。
【问题讨论】:
-
这两个函数的名字肯定不一样。你是什么意思,直到你在 jQuery 中创建函数之前它一直有效?之前有效的代码是什么?
-
Javascript 客户端函数与服务器端代码无关,所以忘记命名。建议您运行 fiddler2 (telerik.com/fiddler) 并查看正在传递的流量以及它的响应。有太多其他事情可能导致不匹配(api 调用的相对路径错误等)。
-
感谢 TrueBlueAussie 和 admanb。代码看起来基本没问题吗?我在努力做正确的事吗?我会在运行 fiddler 后报告。
-
这就是我得到的。 说明:您请求的页面类型没有被提供,因为它已被明确禁止。 请查看下面的 URL 并确保拼写正确。
请求的 URL:/Helpers.vbhtml/ValidateWorkorder
版本信息: Microsoft .NET Framework 版本:4.0.30319; ASP.NET 版本:4.0.30319.1022 -
嗨 - 您是在服务器上的 iis 中运行它还是通过 VS 内置的 Web 服务器运行它?
标签: javascript jquery ajax vb.net webmatrix