Поделитесь конфигом в php с использованием javascript + ajax (json)

Я пытаюсь поделиться config.inc.php в php с javascript. Это работает, но не с ajax … всегда есть вызванная «функция ошибки». Есть ли способ поделиться конфигурационным файлом с рабочим ajax?

Я использую его в проекте Apache Cordova, с начальной загрузкой и JQuery.

Вот часть моего файла index.html:

<html>
<head>
<title></title>
<link rel="stylesheet" href="lib/bootstrap/3.3.1/css/bootstrap.min.css">
<link rel="stylesheet" href="lib/bootstrap/3.3.1/css/bootstrap-theme.min.css">
<script type="text/javascript" src="js/jquery-2.1.1.min.js"></script>
<script type="text/javascript" src="lib/bootstrap/3.3.1/js/bootstrap.min.js"></script>

<script type="text/javascript" src="config.inc.php"></script>

<script type="text/javascript">
jQuery(document).ready(function(){

console.log(config_url);
jQuery.ajax({
url: config_url,
type: "POST",
dataType: "json",
data: "param=no",
success: function(html){
doSomething();
});
}, error: function(e){
alert(e); //always an alert :/
}
});
});
</script>
</head>
<body></body>
</html>

Вот мой config.inc.php:

<?php
global $config;

$config["url"] = "http://192.168.1.Y/fetchdata.php";
$config["db"]["host"] = "localhost";
$config["db"]["database"] = "myDatabase";
$config["db"]["username"] = "root";
$config["db"]["password"] = "";
$config["db"]["port"] = null;
$config["db"]["socket"] = null;

?>
var config_url = <?php echo json_encode($config["url"]); ?>; //if i remove this line, ajax will work and call the "success part".

И, наконец, последний файл «fetchdata.php» для подключения к базе данных:

<?php
// Allow access via php
header('Access-Control-Allow-Origin: *');

// Load configuration
require 'config.inc.php';
global $config;

$sqlconn = mysqli_connect($config["db"]["host"], $config["db"]["username"],
$config["db"]["password"], $config["db"]["database"], $config["db"]["port"],
$config["db"]["socket"]) or die(mysqli_error());

$dataquery = mysqli_query($sqlconn, "SELECT * FROM table_profil");

$arr = array();
while($row = mysqli_fetch_object($dataquery)) {
array_push($arr, array("key" => $row->key, "value" => $row->value));
}
print_r(json_encode($arr));
?>

Я использовал XAMPP для тестирования. Выход

var config_url =
«HTTP: //192.168.1.Y/fetchdata.php»; [{ «ключ»: «размер», «значение»: «150»}, { «ключ»: «цвет», «значение»: «зеленый «}]

Без вывода » var […] .php «; » это будет работать … Но мне понравилось делиться конфигом.

0

Решение

вы использовали JavaScript в PHP без <script> тег? Как так? использование

<script>
var config_url = '<?php echo json_encode($config["url"]); ?>';
</script>

вместо

var config_url = <?php echo json_encode($config["url"]); ?>;

таким образом, вы можете передать config_url с javascript, но ваш ajax не будет работать .. потому что ajax не работает через серверы, поэтому вы не можете использовать «Http: //192.168.1.Y/fetchdata.php«в вашем URL-адресе ajax .. в вашем URL-адресе ajax просто используйте url: ‘fetchdata.php’ и проверьте, что вы ссылаетесь на его путь

0

Другие решения

Спасибо, Мохамед-Юсеф и Майкл, я решил это с помощью части ваших ответов. Вы показали мне ошибку и дали подсказки для решения :).

Тед пишет решение в Совместно используемые данные JSON для php и Javascript / Ajax . Я использую «GET» -Param для поддержки JavaScript. Поскольку в моем «fetchdata.php» не будет никакого javascript, я использую его без вывода param => no javascript, если это не нужно.

Мой index.php включает в себя конфигурацию с параметром «js»; похоже …

<script type="text/javascript" src="config.inc.php?js"></script>

… и мой «config.inc.php» выглядит так

<?php
global $config;

$config["url"] = "http://192.168.1.Y/fetchdata.php";
....

if (isset($_GET["js"])) {
echo
'
var config = [];
config["url"] = "' . $config["url"] . '";
';
}
?>

Без изменений в «fetchdata.php».

Это решение работает для меня. Спасибо всем!

0