我试图找出最好的方式,我检索php变量与AJAX,然后使这些变量变成javascript变量。
假设我的php文件中有以下内容:
echo $total;
echo $actual;
JSON 编辑:
echo json_encode($comments);
我怎么能把这些php变量变成javascript变量在AJAX调用success: function (data) {
或有一个更好的方法来做到这一点?
创建一个结果数组来包含您想要返回的所有变量。对结果进行编码,而不是$comments
。
$result = array('total' => $total, 'actual' => $actual);
echo json_encode($result);
在JavaScript中,将dataType设置为json
, jQuery将自动解析它,然后您可以访问这些变量作为success参数的属性。
$.ajax({
url : '...',
type : 'post',
dataType : 'json',
success : function(result) {
console.log( result.total );
console.log( result.actual );
}
});
您必须做的是json_encode,通过手动或通过这些变量的数组,并通过ajax检索它。
一旦页面加载,您就必须将它们声明为全局变量。这既可以独立完成,也可以使用窗口作用域。
<script>
// On page load
total = <?php echo $total; ?>;
actual = <?php echo $actual; ?>;
// OR
window.total = <?php echo $total; ?>;
window.actual = <?php echo $actual; ?>;
</script>
现在您可以在成功回调中使用这些变量了。
有人已经使用json,所以我要使用一个简单的字符串分隔符。将接下来的两个代码复制粘贴到两个给定名称的文件中,然后在浏览器中打开ajax1.php:
ajax1.php
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<script type = "text/javascript">
var total; // JAVASCRIPT VARIABLE.
var actual; // JAVASCRIPT VARIABLE.
function myAjax ()
{ $.ajax( { url : "ajax2.php",
success : function ( data )
{ var arr = data.split("^^"); // ◄■■ SEPARATE DATA RETURNED.
total = arr[0]; // FIRST VALUE.
actual = arr[1]; // SECOND VALUE.
alert( total );
alert( actual );
},
error : function ( xhr )
{ alert( "error" );
}
} );
}
</script>
</head>
<body>
<button onclick="myAjax()">Click here</button>
</body>
</html>
ajax2.php
<?php
$total = 450;
$actual = 10;
echo $total . "^^" . $actual; // "^^" IS THE SEPARATOR. ANYTHING CAN BE USED.
?>