html — передача переменной javascript в php в режиме cakephp 2

Я пытаюсь передать переменную javascript в php-код в файле представления CakePHP 2.

for (id in response) {

var book = response[id];

if (typeof(book.thumbnail_url) != "undefined") {
var x= book.thumbnail_url;

<?php
$file11 = WWW_ROOT . 'img' . DS . 'book_images';
define('DIRECTORY', $file11);

$content = file_get_contents($abc);
file_put_contents(DIRECTORY . '/'.$isbn.'.jpg', $content);
?>
}
}

я пытаюсь передать значение x в file_get_contents функция вместо $abc так что это может сохранить изображение, поступающее с URL-адреса JavaScript соответственно.

РЕДАКТИРОВАТЬ::

     for (id in response) {var book = response[id];

if (typeof(book.thumbnail_url) != "undefined") {
var x= book.thumbnail_url;
$.ajax({
type: "POST",
url: '/BookSearchs/test',
data: {'yourX':x}
}).done(function(result) {
alert("yes");
}).fail(function() {
alert("no");
});
}}

Это то, что я написал после реализации полученных ответов. Но каждый раз всплывает «нет». Здесь BookSearchs — мой контроллер, а test — моя функция внутри него.

РЕДАКТИРОВАТЬ 2:

function handleResponse(response) {
var target = '';

for (id in response) {var book = response[id];

if (typeof(book.thumbnail_url) != "undefined") {
var x = book.thumbnail_url;$.ajax({
type: 'POST',
url: "BookSearchs/test",data: {
myVal: x
},
success: function() {
alert('AjaX Success')
},
error: function() {
alert('AjaX Failed')
}
})

.done(function() {
alert('AjaX Done!');
});
}}

return true;

}

В настоящее время это то, что я сделал до сих пор, метод формы не сработал. Это перенаправило меня на другую страницу. В любом случае это мой текущий код. И «тест» это моя функция внутри контроллера, где я хочу получить доступ к myVal значение с помощью POST. Также у меня есть этот вопрос, мне нужно создать физический файл для теста, чтобы заставить работать функцию ajax, потому что, если я удаляю test.ctp файл затем Ajax начинает выдавать сообщение об ошибке. Итак, на данный момент я создал физический test.file в BookSearchs папка в представлении, хотя она и пуста, чтобы заставить работать функцию ajax. Я сомневаюсь, что мой Url в Ajax неправильно или я не получаю доступ к значениям в контроллере должным образом.

0

Решение

Я не думаю, что это правильный способ сделать это в теории. Но иногда нам это может понадобиться.

Прежде чем мы пойдем по этому пути, вам может понадобиться подумать о других технологиях, таких как NodeJs (например, fs.readFileSync)

По сути, вы не можете сделать это напрямую. Потому что JavaScript выполняется на стороне клиента, а PHP — на стороне сервера.

Во всяком случае, может быть несколько настроек для этого. Но этот подход может быть медленным и зависит от того, сколько циклов вы делаете.

for (id in response) {
var book = response[id];
if (typeof(book.thumbnail_url) != "undefined") {
var x= book.thumbnail_url;
$.ajax({
type: "POST",
url: '/yourcontroller/route',
data: {'yourX':x}
}).done(function(result) {
//if success, execute other code
}).fail(function() {
//DO other if fail
});
}
}

Затем прочитайте это значение в вашем контроллере

$xValue = $_POST['yourX'];

$file11 = WWW_ROOT . 'img' . DS . 'book_images';
define('DIRECTORY', $file11);
$content = file_get_contents($xValue);
file_put_contents(DIRECTORY . '/'.$isbn.'.jpg', $content);
//do some checking success or fail
//I will assume success
$status = 'success';
echo json_encode(['status'=>$status]);
1

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

Обычно я использую трюк, чтобы пройти JS переменная к CakePhp Controller(переменная php). Я создаю form которые содержат скрытый inputЯ также поставлю ссылку на страницу, которая получит переменную php.

.CTP

 <?=
$this->Html->link('<i class="fa fa-file-pdf-o"></i>' .__('Export'),
'javascript:myFunction();',
array('escape' => false, 'class' => 'btn btn-app  dispatch',  'id' => 'dispatch_packages',
'style'=>'margin-right:0px;background: #f39c12;color:white;',
'disabled' => 'false'));
?>
<form id="sampleForm" name="sampleForm" style="display: none" method="post" action="<?= $this->Url->build([
'controller' => 'YourController',
'action' => 'youraction']) ?>">
<input type="hidden" name="variable" id="variable" value="">
</form>

JS

var jsVar=0;
function  myFunction()
{

document.sampleForm.variable.value = jsVar;

document.forms["sampleForm"].submit();
}

Я использовал это с CakePhp 3.x фреймворк & это работает очень хорошо. Вы просто должны написать URL с CakePhp 2.x Синтаксис.

Не стесняйтесь комментировать мой ответ, если у вас возникнут трудности с его применением.
Удачи !

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector