0
當我試圖從AJAX一切PHP文件接收JSON數據正常工作:如何從硅石控制器接收JSON數據AJAX
test.php的
<?php
header("Content-Type: application/json; charset=UTF-8");
$pdo = new PDO('mysql:host=localhost;dbname=database', 'root', '');
$stmt = $pdo->prepare("SELECT id, name FROM table");
$stmt->execute();
$stmt = $stmt->fetchAll(PDO::FETCH_CLASS);
echo json_encode($stmt);
?>
main.js
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
myObj = JSON.parse(this.responseText);
console.log(myObj);
document.getElementById("par").innerHTML = myObj[4].id + " " + myObj[4].tag1;
}
};
xmlhttp.open("GET", "http://localhost/project/app/models/Test.php", true);
xmlhttp.send();
但是,當我試圖從硅石控制器接收JSON:
Ajax.php
namespace AI\models;
use Silex\Application;
use Silex\Api\ControllerProviderInterface;
class Ajax implements ControllerProviderInterface
{
public function connect(Application $app){
$controllers = $app['controllers_factory'];
$controllers->get('/', 'AI\models\Ajax::home');
return $controllers;
}
public function home(Application $app){
header("Content-Type: application/json; charset=UTF-8");
$result = $app['db']->prepare("SELECT id, name FROM table");
$result->execute();
$result = $result->fetchAll(\PDO::FETCH_CLASS, \AI\models\Ajax::class);
echo json_encode($result);
return $app['twig']->render('ajax.twig');
}
}
main.js
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
myObj = JSON.parse(this.responseText);
console.log(myObj);
document.getElementById("par").innerHTML = myObj[4].id;
}
};
xmlhttp.open("GET", "http://localhost/project/app/models/Ajax.php", true);
xmlhttp.send();
我在控制檯中的錯誤:
Uncaught SyntaxError: Unexpected token < in JSON at position 0
at JSON.parse (<anonymous>)
at XMLHttpRequest.xmlhttp.onreadystatechange (main.js:4)
xmlhttp.onreadystatechange @ main.js:4
我沒有任何想法,爲什麼會出現,當我嘗試接收JSON問題來自一堂課。
我想是因爲我需要輕鬆變量返回JSON內部控制器從URL到數據庫查詢,然後以JSON的形式獲取數據。這就是爲什麼我試圖渲染模板來獲取使用該頁面的Ajax腳本(包括樹枝變量)。 – robotluke
我不認爲我理解你的問題。你能編輯你的問題併發布'''''ajax.twig文件'''的內容嗎? – mTorres
另外我的意思是,在您的AJAX調用中,您不想呈現模板,您必須呈現模板才能轉到您的客戶端代碼(JS)進行AJAX調用的頁面。這有意義嗎? – mTorres