[英]How to send a Javascript/Ajax variable to a php page using AJAX
[英]Send php variable to javascript Ajax in HTML page
我有一个带有javascript函数的HTML页面:
<script type="text/javascript">
/* <![CDATA[ */
function voteCounter(messageID)
{
$.get("./_vote/counter_ajax.php?messageID="+messageID, function(data){
alert(data);
});
}
/* ]]> */
</script>
我的PHP文件“ counter_ajax.php”:
<?php
require "../lib/config.php";
$STB = $config['dbTableNames']['votes'];
$DBServer = $config['dbConnection']['host'];
$DBUser = $config['dbConnection']['user'];
$DBPass = $config['dbConnection']['pass'];
$DBName = $config['dbConnection']['name'];
$messageID = $_GET['messageID'];
$db = new mysqli($DBServer, $DBUser, $DBPass, $DBName);
$resultUp = $db->query("SELECT SUM(voteUp) AS voteUp FROM $STB WHERE messageID = '$messageID'")->fetch_object()->voteUp;
$resultDown = $db->query("SELECT SUM(voteDown) AS voteDown FROM $STB WHERE messageID = '$messageID'")->fetch_object()->voteDown;
echo json_encode("Positive: " . $resultUp . " .... Negative: " . $resultDown);
?>
如果我在浏览器中运行PHP文件,则结果将填充文本和变量:
正面:3 ..负面:2
但是警报框中HTML中的响应是这样的,没有变量:
正负:
什么是正确的方法?
假设您的php输出为json,则数据变量将为json对象,并且alert不会将数据对象转换为字符串。 尝试这个:
<script type="text/javascript">
/* <![CDATA[ */
function voteCounter(messageID)
{
$.get("./_vote/counter_ajax.php?messageID="+messageID, function(data){
alert(data.Positive);
});
}
/* ]]> */
</script>
以下是相关文档: https : //api.jquery.com/jquery.get/#example-5
JQuery Ajax函数旨在根据服务器在响应标头中发送的地雷类型/内容类型来标识响应类型(html,json,xml等)。
在您的情况下,您尚未设置任何内容类型,因此JQuery函数无法确定json响应。
在PHP方面,您可以执行以下操作:
$data = /** whatever you're serializing **/;
header('Content-Type: application/json');
echo json_encode($data);
或者在jQuery端,您可以使用jQuery.getJSON() ,它始终假定服务器响应位于json中。
jQuery.get()中还有一个选项可以在第四个参数中设置数据类型,例如:
jQuery.get( url [, data ] [, success ] [, dataType ] )
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.