从jQuery AJAX调用.NET函数时出现403禁止错误

时间:2014-03-05 23:45:34

标签: javascript jquery ajax vb.net webmatrix

我有这个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的片段。

@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文档和在线帖子似乎支持这一想法。

2 个答案:

答案 0 :(得分:1)

也许您的AJAX请求是通过HTTP进行的,并且您为应用程序设置了“需要SSL”?

答案 1 :(得分:1)

也许我错了,但我认为Helpers不打算被客户端调用。

助手在ASP.NET网页中是存储为.cshtml文件的组件,旨在通过允许其他ASP.NET网页使用熟悉的object.method([args ...])语法访问它们来提高可重用性在观点中。

有关帮助者的有用link

您似乎想要的是asmx格式的Web服务,它允许http Post请求并发送和接收JSON。

Link创建Web服务。 Link启用http Post。 Link启用JSON。