首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

JS ajax 执行先后的 有关问题。来帮个!

2013-01-06 
JS ajax 执行先后的 问题。。。来帮个!!!!var currencySelhtm $.ajax({url: /servlet/CurrencyAction.d

JS ajax 执行先后的 问题。。。来帮个!!!!



var currencySelhtm = "";
$.ajax({
    url: "/servlet/CurrencyAction.do",
    type: "post",
    dataType: "xml",
    data: "action=showall",
    success: function(xmlResult) {
        var $xml = $(xmlResult).find("Currency");
        if ($xml.length < 1) {
        } else {
            for (var m = 0; m < $xml.length; m++) {
                var Currency_Name = $xml.eq(m).attr("Currency_Name");
                var Currency_Signcode = $xml.eq(m).attr("Currency_Signcode");
                var Currency_ID = $xml.eq(m).attr("Currency_ID");
                currencySelhtm += '<option value="' + Currency_ID + '">' + Currency_Name+'</option>';

            }
        }
    },
    error: function() {
        currencySelhtm = "";
    }
});
alert(currencySelhtm);

result += "币种:<select name='tcurrencys' id='tcurrencys'><option value='-1'>---</option >" + currencySelhtm + "</select><br/><br/>";



有以上代码,我想动态生成币种 这个下拉框的 OPT选项。

遇到的问题:
程序先执行了 result 的拼串 动作。使得currencySelhtm  后做 AJAX 获取的数据 无法拼凑进 目标SELECT 元素。大家有没有其他的 办法?谢谢了
[解决办法]
var currencySelhtm = "";
$.ajax({
    url: "/servlet/CurrencyAction.do",
    type: "post",
    dataType: "xml",
    data: "action=showall",
    success: function(xmlResult) {
        var $xml = $(xmlResult).find("Currency");
        if ($xml.length < 1) {
        } else {
            for (var m = 0; m < $xml.length; m++) {
                var Currency_Name = $xml.eq(m).attr("Currency_Name");
                var Currency_Signcode = $xml.eq(m).attr("Currency_Signcode");
                var Currency_ID = $xml.eq(m).attr("Currency_ID");
                currencySelhtm += '<option value="' + Currency_ID + '">' + Currency_Name+'</option>';


            }
                alert(currencySelhtm);
                //你要怎么使用这个currencySelhtm的方法放在这个回调函数中即可
        }
    },
    error: function() {
        currencySelhtm = "";
    }
});

 
result += "币种:<select name='tcurrencys' id='tcurrencys'><option value='-1'>---</option >" + currencySelhtm + "</select><br/><br/>";


[解决办法]

var currencySelhtm = "";
$.ajax({
    url: "/servlet/CurrencyAction.do",
    type: "post",
    dataType: "xml",
    data: "action=showall",
    success: function(xmlResult) {
        var $xml = $(xmlResult).find("Currency");
        if ($xml.length < 1) {
        } else {
            for (var m = 0; m < $xml.length; m++) {
                var Currency_Name = $xml.eq(m).attr("Currency_Name");
                var Currency_Signcode = $xml.eq(m).attr("Currency_Signcode");
                var Currency_ID = $xml.eq(m).attr("Currency_ID");
                currencySelhtm += '<option value="' + Currency_ID + '">' + Currency_Name+'</option>';
 
            }
            result += "币种:<select name='tcurrencys' id='tcurrencys'><option value='-1'>---</option >" + currencySelhtm + "</select><br/><br/>";
            alert(currencySelhtm);
        }
    },
    error: function() {
        currencySelhtm = "";
    }
});


AJAX 的本意, 就是异步JavaScript和XML。 所以前面的事情刚开始做,不管有没有做完, 马上就会执行下一条语句。

如果你想在提交之后才做某个事情, 两种解决方案:
1. 写在 $.ajax 的回调函数之中。
2. 将 $.ajax 设置为同步 async:false , 不过这样并不好, 会造成页面短时间无法操作。
[解决办法]
var currencySelhtm = "";
$.ajax({
    url: "/servlet/CurrencyAction.do",
    type: "post",
async:false,///////加这句同步就行了
    dataType: "xml",
    data: "action=showall",


    success: function(xmlResult) {
        var $xml = $(xmlResult).find("Currency");
        if ($xml.length < 1) {
        } else {
            for (var m = 0; m < $xml.length; m++) {
                var Currency_Name = $xml.eq(m).attr("Currency_Name");
                var Currency_Signcode = $xml.eq(m).attr("Currency_Signcode");
                var Currency_ID = $xml.eq(m).attr("Currency_ID");
                currencySelhtm += '<option value="' + Currency_ID + '">' + Currency_Name+'</option>';
 
            }
        }
    },
    error: function() {
        currencySelhtm = "";
    }
});
alert(currencySelhtm);
 
result += "币种:<select name='tcurrencys' id='tcurrencys'><option value='-1'>---</option >" + currencySelhtm + "</select><br/><br/>";

热点排行