Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从ajax成功回调函数中读取javascript变量_Javascript_Jquery - Fatal编程技术网

如何从ajax成功回调函数中读取javascript变量

如何从ajax成功回调函数中读取javascript变量,javascript,jquery,Javascript,Jquery,我在做什么 $.ajax({ type: "GET", url: url, //valid url..The ajax part works fine dataType: 'html', success: function(response) { if (loginStatus !== 'false') { testFunction(response); //assuming there is a function cal

我在做什么

$.ajax({
    type: "GET",
    url: url, //valid url..The ajax part works fine
    dataType: 'html',
    success: function(response) {

        if (loginStatus !== 'false') {
            testFunction(response); //assuming there is a function called testFunction
        }
    }
});
响应是html的混合内容,它还包含

<script>var loginStatus = 'false'</script>
var loginStatus='false'
如果(loginStatus!=“false”)在成功模式下不起作用。我做错了什么

反应是这样的

<!DOCTYPE html>
<html>
<head>
<title>Title of the document</title>
</head>

<body>
This is a test page
<script>var loginStatus = 'false'</script>
</body>

</html>

文件标题
这是一个测试页面
var loginStatus='false'

我认为您无法访问ajax返回中的变量,因为它的javascript没有被解释

这不是一个好主意(您可能会遇到其他问题),但您可以将返回放在某个隐藏的iframe中,并使用以下方法访问其中的变量:

document.getElementById("iframeId").contentWindow.loginStatus
如果您可以控制检索ajax结果的页面,我建议您只响应变量内容或json,以便在javascript中轻松操作

$.ajax({
    type: "GET",
    url: 'loginCheck.php', //valid url..The ajax part works fine
    dataType: 'html',
    success: function(response) {
        if (response == "YES") {
         testFunction(response); //assuming there is a function called testFunction
        }
    }
});
loginCheck.php //检查用户名和密码 如果它与数据库中的用户名和密码匹配。 然后回显“是”,否则回显“否”

我用PHP脚本语言解释了这个登录概念。

解决方案并不完美。如果响应是JSON,这将容易得多。提供潜在解决方案的提示

您必须解析返回的HTML。糟糕的是Javascript部分必须是
eval
d(糟糕的做法!),除非您执行一些正则表达式魔术来获取变量的值

更新(不要这样做):

再次声明,这是不好的做法,但这是可能的。以下只是应用于代码的概念证明。还有一个与基本思想相一致的例子。基本上,您可以使用JQuery的
.parseHTML
方法解析响应,并使用
.globalEval
对脚本求值,此时变量就可以检查了

$.ajax({
键入:“获取”,
url:url,//有效url..ajax部分工作正常
数据类型:“html”,
成功:功能(响应){
var scriptContent=$($.parseHTML(响应,文档,true)).filter('script').text();
$.globalEval(脚本内容);
//此时,应定义变量loginStatus
if(loginStatus!==“false”){
testFunction(response);//假设有一个名为testFunction的函数
}
}
});

另一个参考:

分享来自ajax@guradio--刚才做了目标url实际包含什么?
loginStatus!='false'
它的意思是false!==假`?它永远不会满足你的愿望condition@DavidJawphan--该布尔值是动态设置的。是的,我们的想法是评估这个变量。如果是假的,不要叫那个方法。是的,我希望我能。我同意这是一个更好的解决方案。我用我认为可行的例子更新了答案。如果有帮助的话,请告诉我。我最终听到了您关于不依赖eval的第一个建议,并将该布尔值解析为类似于false的html…然后就可以很容易地执行$(response).find('.loginStatus').html()…这很有效