我试图使用JSON返回一个我可以操作并稍后使用的数组,但是,当我使用AJAX返回一个JSON编码的字符串时出现问题。我目前正在使用警报作为调试方法,我的警报似乎以错误的顺序触发。
脚本:
<script type="text/javascript">
jQuery(document).on('change', '#ProductNumbers', function()
{
selectedIndex = $('#ProductNumbers').prop('selectedIndex');
var productNumber = $('#ProductNumbers').val();
var jArray = getCategories( productNumber );
alert( jArray );
});
</script>
<script type="text/javascript">
function getCategories( productNumber )
{
$.ajax({
url: '/php/DBManager/GetCategories.php',
data: {
ProductNumber: productNumber
},
success: function(result)
{
alert( result );
return result;
}
});
}
</script>
第一个脚本调用第二个脚本,但行警报(jArray);警报未定义,然后我得到警报(结果);来自第二个脚本,它返回它应该的内容。
有什么想法吗?
答案 0 :(得分:2)
它将是undefined
,因为ajax调用是异步,并且在完成ajax调用之前会执行第一个脚本代码。
因此,第一个脚本的警报将在第二个脚本中的警告之前被触发。
你必须在success函数中使用ajax调用返回的对象对它进行任何操作。
任何需要来自ajax调用的数据都必须在完成后完成。为此,请将其置于通话的成功功能中。
例如:
$.ajax({
url: '/php/DBManager/GetCategories.php',
data: {
ProductNumber: productNumber
},
success: function(result)
{
//use returned result data like this
SomeFunction(result);
}
});
function SomeFunction(data)
{
// do any operation here
}