jQuery AJAX и VBscript - невозможно получить значения в переменных VBscript при использовании POST в jQuery AJAX - PullRequest
0 голосов
/ 05 октября 2010

У меня проблемы с получением VBscript на странице .asp для назначения значений переменным, которые отправляются функцией jQuery ajax ().

У меня есть этот код на нескольких других сайтах, и он работает нормально,но по какой-то причине он не будет работать на этом сайте.

На всякий случай, если это имеет значение, мы запускаем сайты через IIS7.

Проблема в том, что переменные на странице VBscriptне присваивайте никакие значения, переданные на странице JavaScript.Однако, если я изменю POST на GET и изменим request.form на request.queryString, это сработает.Проблема с GET заключается в том, что мы не можем ввести очень много данных в поле «Описание» нашей формы, не получив ошибку 414. Следовательно, используется POST.

Как я уже сказал, у меня есть этот код на нескольких другихсайты, поэтому я не могу понять, почему он здесь не работает.

Вот мой код (это смесь старого кода и нового кода):

javascript:

var prodID = document.forms['hidden'].prodid.value;
var strSubCatID = document.forms['frmProducts'].cmbSubCategory.value;
var strName = encodeURIComponent(document.forms['frmProducts'].txtName.value);
var strDescription = encodeURIComponent(document.forms['frmProducts'].txtDesc.value);

jQuery.ajax({
    type: "POST",
    url: "/_ajax/products/updateDescription.asp",
    data: {
        "prodid": prodID,
        "strName": strName,
        "strSubCatID": strSubCatID,
        "strDescription": strDescription
    },
    success: function () {
        alert("Update successful")
    },
    error: function (xhr) {
        alert("Error occured during Ajax request, the error status is: " + xhr.status);
    }
});    

VBscript:

dim strSubCatID : strSubCatID = request.form("strSubCatID")
dim strName : strName = request.form("strSubCatID")
dim strDescription : strDescription = request.form("strDescription")
dim strProdID : strProdID = request.form("strProdID")

strSQL = "UPDATE tblProducts SET "
strSQL = strSQL & "SubCatID = '" & strSubCatID & "', "
strSQL = strSQL & "Name = '" & strName & "', "
strSQL = strSQL & "Description = '" & strDescription & "' "
strSQL = strSQL & " WHERE ProdID = '" & strProdID & "'"

dim rs : set rs=Server.CreateObject("ADODB.recordset")
rs.Open strSQL, cn, 3, 3

Любая помощь приветствуется.

1 Ответ

2 голосов
/ 05 октября 2010

Проблема в том, что ваши переменные не совпадают, например, вы отправляете prodid, но ищете для strProdID, также нет необходимости кодировать перед передачей данных в виде объекта,jQuery выполняет внутреннюю кодировку, например:

jQuery.ajax({
  type: "POST",
  url: "/_ajax/products/updateDescription.asp",
  data: {
    strProdID:      $("form[name=hidden] [name=prodid]").val(),
    strName:        $("form[name=frmProducts] [name=txtName]").val(),
    strSubCatID:    $("form[name=frmProducts] [name=cmbSubCategory]").val(),
    strDescription: $("form[name=frmProducts] [name=txtDesc]").val()
  },
  success: function() {
    alert("Update successful")
  },
  error: function(xhr){
    alert("Error occured during Ajax request, the error status is: " + xhr.status);
  }
});

Также на стороне VBScript у вас есть:

strName = request.form("strSubCatID")

, которая выглядит так:

strName = request.form("strName")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...