我试图将一个变量传递给一个我认为调用另一个函数的函数(我认为),但是我遇到了问题。我需要在第二个函数中使用的变量是productid,但我尝试过的几种方法都没有用。无论是在javascript或Jquery中修复都会很棒!!!
这是我需要
变量的行var error_url = '/ProductDetails.asp?ProductCode' + productid;
这是变量源自......
var productid = form.elements['ProductCode'].value;
这是整个js代码
function addToCart2(form, button) {
var softAdd = true;
var productid = form.elements['ProductCode'].value;
var qstr;
var bttnName = button.name;
button.disabled = true;
if (form.elements['ReturnTo']) {
form.elements['ReturnTo'].value = "";
}
qstr = serialize(form, bttnName + '.x', '5', bttnName + '.y', '5');
sendAjax('POST','/ProductDetails.asp?ProductCode=' + productid + '&AjaxError=Y', qstr , retrieveProductError2 ,displayServerError,false);
button.disabled = false;
return false;
}
function retrieveProductError2(result, statusCode) {
var ele = document.getElementById('listOfErrorsSpan');
var errorIndex = result.indexOf('<carterror>');
var productIndex = result.indexOf('<ProductIndex>')
if (errorIndex > -1 && productIndex == -1) {
var error_url = '/ProductDetails.asp?ProductCode' + productid;
window.location = error_url;
}
if (errorIndex != -1) {
//ele.innerHTML = result.slice(errorIndex + 11, result.indexOf('</carterror>'));
}
else {
ele.innerHTML = "";
if (productIndex == -1) {
sendAjax('GET','/AjaxCart.asp?GetIndex=True', '', showCart, null, false);
}
else {
productIndex = result.slice(productIndex + 14, result.indexOf('</ProductIndex>'));
sendAjax('GET','/AjaxCart.asp?Index=' + productIndex, '', showCart, null, false);
}
}
}
答案 0 :(得分:2)
最简单的方法是将变量声明移到方法之外。因此,在addToCart2方法之外更改产品ID的声明。所以在这种方法之外你可以这样做:
var product_id;
然后在你的方法中从product_id中删除var,它只是一个赋值而不是声明。
答案 1 :(得分:1)
如果你将retrieveProductError2作为sendAjax调用的错误回调传递,你可以传入:
function(result, statusCode) { retreiveProductError2(result, statusCode, productId);}
然后更改retreiveProductError2函数的定义以接受附加参数。