2010-10-05 13 views
0

Je n'arrive pas à obtenir le VBscript sur une page .asp pour affecter des valeurs aux variables envoyées par la fonction ajax() de jQuery .jQuery AJAX et VBscript - Impossible d'obtenir des valeurs dans les variables VBscript lors de l'utilisation de POST dans jQuery AJAX

J'ai ce code sur plusieurs autres sites et cela fonctionne très bien, mais pour une raison quelconque, il ne fonctionnera pas sur ce site. Au cas où cela ferait une différence, nous lançons les sites via IIS 7.

Le problème est que les variables de la page VBScript ne reçoivent aucune des valeurs passées dans la page javascript. Toutefois, si je change le POST en GET et change request.form en request.queryString cela fonctionne. Le problème avec GET est que nous ne pouvons pas entrer beaucoup de données dans le champ Description de notre formulaire sans obtenir une erreur 414 - D'où l'utilisation de POST. Comme je l'ai dit, j'ai ce code sur plusieurs autres sites, donc je ne peux pas comprendre pourquoi cela ne fonctionne pas ici.

Voici mon code (Il est un mélange de vieux code et le code plus récent):

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 

Toute aide est appréciée.

Répondre

2

Le problème est vos variables ne correspondent pas, par exemple, vous postons prodid mais recherche pour strProdID, aussi il n'y a pas besoin d'encoder avant de passer vos données comme un objet, laissez jQuery l'encodage interne, pour exemple:

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); 
    } 
}); 

également sur le côté VBScript vous:

strName = request.form("strSubCatID") 

qui ressemble il devrait être:

strName = request.form("strName")