繁体   English   中英

将php变量发送到HTML页面中的javascript 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM