Если я загружу страницу PHP с помощью Jquery .load (file.php), может ли включенный файл использовать переменные php, которые были определены на странице с именем load ()?
Вы не понимаете, как все работает.
Если вы хотите перенести определенные переменные из PHP на JavaScript, вы можете вывести некоторый вывод в JSON в вашем PHP-скрипте, например:
<?PHP header("Content-Type: application/json"); $myVariable = "hello world"; echo json_encode(array(array("myVariable" => $myVariable))); /* Output looks like this: [ { "myVariable": "hello world" } ] */ ?>
Ваш JavaScript / JSON должен выглядеть примерно так:
$.getJSON("test.php", function(result) { console.log(result[0].myVariable); });
Имеет ли это смысл?
Нет, вам нужно передать переменные, которые вы хотите использовать, в файл file.php
:
$('#yourdiv').load('file.php?var1=xyz&var2=xyz&var3=xyz');
И тогда вы можете ПОЛУЧИТЬ их в файле file.php:
$var1 = $_GET['var1']; $var2 = $_GET['var2']; $var3 = $_GET['var3'];
Если имеется много переменных, используйте метод POST:
$('#yourdiv').load('file.php', {var1:x, var2:y, var3:z})
А затем получите переменные в файле file.php:
$var1 = $_POST['var1']; $var2 = $_POST['var2']; $var3 = $_POST['var3'];
Да, используйте параметр данных, см. http://api.jquery.com/load/ :
$('#someelement').load( "test.php", { 'key1': '<?php echo $value1; ?>', 'key2': '<?php echo $value2; ?>' } );
Параметры отправляются в файл test.php
и доступны как:
$_POST['key1'] $_POST['key2']
Вам нужно будет передать эти переменные в загруженный файл PHP через функцию .load.
Пример:
$("#objectID").load("test.php", { 'choices[]': ["{$choice1}", "{$choice2}"] } );
Переменные, определенные в текущем файле PHP, станут частью Javascript, который загружает новый файл PHP.
переменная в скрипте PHP
загружаемом JavaScript
, отличается от страницы, загружающей скрипт PHP
, поэтому ответ отрицательный.
но вы можете определить глобальные переменные или использовать супер глобальные переменные типа ( $_GET
, $_POST
и т. д.), чтобы получить то, что вы хотите.
Второй аргумент (params) функции загрузки JQuery должен быть объектом или функцией обратного вызова, но также может быть пустой строкой. В зависимости от этого загрузка отправляет сообщение или получает запросы.
У меня возникла идея автоматически переключаться между get и post (например, если набор файлов cookie), потому что get быстрее и кэшируется, а почта – больше.
Хуже всего писать функцию загрузки, включая контент внутри функции обратного вызова, дважды, чем писать что-то вроде этого:
//get var url="cache_dir/my_bag.html"; var params=""; if(document.cookie){ //post url="post.php"; params="{my:bag}"; } $(selector).load(url,params,function(){ ... });