需要将变量传递给函数
我想将一个变量传递给一个函数,我相信调用另一个函数(我认为)但有问题。我需要在第二个函数中使用的变量是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);
}
}
}
如果您在retrieveProductError2传递作为sendAjax打电话给你的错误回调,你可以改为传递:
function(result, statusCode) { retreiveProductError2(result, statusCode, productId);}
然后改变你的retreiveProductError2函数的定义接受额外的参数。
最简单的方法是将变量声明移到方法之外。因此,请在addToCart2方法之外更改产品ID的声明。因此,除此之外,您可以这样做:
var product_id;
然后在您的方法中将var从product_id中删除,它只是一个赋值而不是声明。
这有效,但因为它是使用全局变量是一种非常糟糕的编程风格。另外,当多个ajax调用同时被调用时,它可能会导致副作用。由于ajax是异步的,所以这很难防止。 – txwikinger 2010-07-09 16:22:34
@txwikinger我同意。这只是一个让他继续前进的简单方法。 – spinon 2010-07-09 16:26:27
你能解释一下,因为我无法理解你的答案吗? – user357034 2010-07-09 16:41:29
在第12行中,您调用'sendAjax' ...其中一个参数是'retrieveProductError2'。用上面给出的代码替换它。然后,将第16行改为读取'function retrieveProductError2(result,statusCode,productId){'。然后您可以访问retrieveProductError2函数内的productId变量。 – sje397 2010-07-09 16:46:26
并确保你拼写检索正确 - 不像我自己:) – sje397 2010-07-09 16:47:19