我有一个函数,它使用2种方法调用php脚本的POST事件。一个是在document.ready
之后调用以返回Id。第二个我想发送第二个方法的Id,它将从该Id中找到所有附件。
第一种方法可行,但第二种方法不起作用。我可以从jquery函数事件创建一个全局变量,即
... function(data){
Record=Data;
}
这是创建全局变量的方法吗?
我的代码:
function getAttachRecords(metodo, id){
RegId = "";
jQuery.ajax({
type: "GET",
async: true,
url: "source/getAttchRecord.php",
data:{method: metodo, id: id},
cache: true,
dataType: "html",
contentType: "application/x-www-form-urlencoded;charset=ISO-8859-15",
success: function(data,textStatus,jqXHR){
if(metodo ="truncRecord"){
RegId = data;
$('#file_upload').uploadify({
'formData' : {
'timestamp' : '<?php echo time();?>',
'token' : '<?php echo md5("unique_salt" . $timestamp);?>',
'registo' : RegId
},
'uploader' : 'source/uploadify/upload.php',
'swf' : 'source/uploadify/uploadify.swf',
'script' : 'source/uploadify/upload.php',
'cancelImg' : 'source/uploadify/cancel.png',
'folder' : 'source/uploadify/uploads',
'auto' : true,
'onSelect': function(){
$("#table_content").slideUp();
},
'onQueueComplete' : function() {
$("#table_content").slideDown();
getAttachRecords("getAttachRecords", RegId);
}
});
}else{
alert(data);
$("table").find("#table_content").html(data);
}
}
});
}
答案 0 :(得分:3)
window
应始终在范围内,因此只需添加您的变量:
//alert(bar); // `foo` is undefined up here
(function(){
(function(){
(function(){
// some nested scope
window.foo = 'bar';
})();
})();
})();
alert(foo); // `foo` now contains 'bar'
请注意,因为(尤其是ajax)它不能保证在您使用它时可用,所以最好还是检查它:
if (typeof foo !== 'undefined'){
alert(foo);
}
但是,您也可以在该范围内定义它:
var foo;
(function(){
(function(){
(function(){
// some nested scope
foo = 'baz';
})();
})();
})();
alert(foo); // 'baz'
答案 1 :(得分:1)
只需在回调或其他包装函数之外进行初始定义:
var Record;
function getNewRecord () {
Record = 'new data';
}
如果该值由回调设置,则无法确定何时更新此值,而不是在成功函数内或触发其他事件/回调。
答案 2 :(得分:0)
我找到了问题
if(metodo =“truncRecord”){
这个if语句应该是错误的:
if(metodo ==“truncRecord”){
更改后,一切正常