在 JavaScript 中使用 php json 结果

using php json result in JavaScript

本文关键字:php json 结果 JavaScript      更新时间:2023-09-26

我正在尝试使用我的MYSQL结果,我在JavaScript中使用PHP调用。

我在 PHP 文件中的代码:

$con = mysqli_connect($kalenderCFG['server'], $kalenderCFG['username'], $kalenderCFG['password'], $kalenderCFG['database'], $kalenderCFG['port']);
$strSQL = "SELECT DATE_FORMAT(`Datum`, '%d.%m.%Y') AS Datum, `Titel`, `Beschreibung`  FROM `cal` WHERE month(`Datum`) = '" . $month . "' AND year(`Datum`) = '" . $year . "' ORDER BY `Datum`";
$result = mysqli_query($con, $strSQL);
$data = array();
while ($row = mysqli_fetch_assoc($result)){
    $data[] = $row;
}
echo json_encode($data);

这工作正常,例如我得到以下内容

[{"Datum":"02.12.2014","Titel":"Mathe KA","Beschreibung":"ABI-Vorklausur"},{"Datum":"12.12.2014","Titel":"Physik KA","Beschreibung":"ABI-Vorklausur"},{"Datum":"13.12.2014","Titel":"Mein erster Termin","Beschreibung":"Das ist einfach nur ein Testeintrag um die Funktion zu testen."}]

当我现在尝试通过以下代码在 JavaScript 中使用此代码时:

var json = String($.get('myPhpFile.php'));
    listEvents = JSON && JSON.parse(json) || $.parseJSON(json);
$('.container').prepend(listEvents[1].Datum);

我收到"未捕获的语法错误:意外令牌o"

当我现在尝试通过另一种方式做到这一点时:

var json = String($.get('myPhpFile.php'));
$('.container').prepend(json[1].Datum);

这将打印整个 json 变量。

而这个:

var json = $.get('myPhpFile.php');
$('.container').prepend(json[1].Datum);

捕获的类型错误:无法读取未定义的属性"基准"

那我做错了什么。希望你能帮助我。

$.get

返回字符串,它返回一个 JQXHR 对象,因为您的数据尚未被检索。你需要在回调中处理返回,如果你做得正确,你不必解码JSON:jQuery会为你处理它。尝试这样的事情:

$.get('myPhpFile.php', {}, function(json) {
    $('.container').prepend(json[1].Datum);
}, 'json');

此外,如果您在 PHP 中提供了正确的 Content-Type 标头,jQuery 会自动将 dataType 设置为 JSON。

试试这个

$.get( "myPhpFile.php", {}, function( data ) {
  console.log(data);
}, "json" );

它应该写入控制台 json 响应,因为$.get()是异步的,因此您必须等待来自服务器的结果,并且也不会返回字符串。