我有一个select输入,使用ajax-php-ajax到元素的数据库中填充一个值,在结果加载后,它现在在select上有一个值,
之前
<select type="text" id="sys_type" name="" class="form_input" required/>
</select>
后
<select type="text" id="sys_type" name="" class="form_input" required/>
<option value="2">Super Admin</option>
<option value="3">Admin</option>
<option value="4">Encoder</option>
<option value="5">Office Staff</option>
<option value="6">Guest</option>-->
</select>
这是代码函数的一部分
<script type="text/javascript" language="javascript">
$(document).ready(function()
{
objFunction["select_usertype"]($("#sys_type"), Base64.encode("select_usertype"));
//objFunction[js_obj_function](selector, php_action )
//objFunction is an object that holds some functions
//var objFunction= { js_obj_function : function(){ //...ajax here//} }
//now the problem
//============================================================
var usertype= $("#sys_type").val(); //if i'm using this it returns null
//maybe this is executed when the above function is not done yet.
});
</script>
我无法获得该值,我试图将其用作解决方案但不起作用
function looper()
{
if($("#sys_type").val() !=="" )//if($("#sys_type option:selected").val() !=="" )
{
console.log($("#sys_type").val()); //returned null
clearInterval(int);
}
}
var int = setInterval(looper(), 10);
感谢您提前提供任何帮助,
///-------------------->Request Response
var objFunction=
{
select_usertype: function select_usertype(element, action,middlewaretoken)
{
if(middlewaretoken!=="")
{
$.ajax({
type: "POST",
url: "private/process/request.php",
dataType: "json",
data:{action: action, middlewaretoken:Base64.encode(middlewaretoken)},
success:function(data)
{
if(data.error!==true)
{
if(element.length > 1)
{
for(var x=0; x < element.length; x++)
{
element[x].empty();
for(var i=0; i < data.length; i++)
{
element[x].append('<option value="'+data[i].sys_id+'">'+data[i].sys_usertype+'</option>');
}
}
}
else
{
element.empty();
for(var i=0; i < data.length; i++)
{
element.append('<option value="'+data[i].sys_id+'">'+data[i].sys_usertype+'</option>');
}
}
}
else
{
if(element.length > 1)
{
for(var i=0; i < element.length; i++)
{
element[i].empty().append('<option value="">Select...</option>');
}
}
else
{
element.empty().append('<option value="">Select...</option>');
}
}
}
});
}
}//, other objects.....
};
答案 0 :(得分:1)
如果你使用的是jQuery.ajax()
,你可以写这样的东西
jQuery.ajax(...).done(function() {
var usertype= $("#sys_type").val();
}).fail(function() {
//some error handling
});
编辑
您可以像这样修改select_usertype
功能
function(...) {
if(...) {
return jQuery.ajax(...);
}
}
移动你的成功功能
var oAjaxRequest = objFunction["select_usertype"]($("#sys_type"), Base64.encode("select_usertype"));
if (oAjaxRequest) {
oAjaxRequest.done(function(oData) {
//all other staff
....
var usertype= $("#sys_type").val();
}.bind(objFunction["select_usertype"]));
}
或者您可以将一些回调传递给select_usertype
函数并在成功函数中调用它。例如:
function(element, action, middlewaretoken, successCallback) {
if(...) {
jQuery.ajax(
...,
success: function(oData) {
...
successCallback.call();
}
);
}
}
并在document.ready
传递
function process() {
var usertype= $("#sys_type").val();
}
objFunction["select_usertype"]($("#sys_type"), Base64.encode("select_usertype"), null, process.bind(this));