2013-10-01 2 views
-2

У меня довольно сценарий, который добавляет элементы в таблицу. Мне нужно извлечь информацию из базы данных MySQL на основе UPC, которая передается через JavaScript.PHP в JavaScript с использованием document.write();

Я попытался: document.write("<?php echo '375'; ?>"); просто посмотреть, будет ли это работать, и как только сценарий попадет на эту строку, страница обновилась и отобразила пустую белую страницу.

The полного JavaScript ниже:

//setup before functions 
var field = document.getElementById("UPC"); 
var typingTimer;    //timer identifier 
var doneTypingInterval = 1000; //time in ms, 1 seconds 

//on keyup, start the countdown 
$('#UPC').keyup(function(){ 
    clearTimeout(typingTimer); 
    typingTimer = setTimeout(doneTyping, doneTypingInterval); 
}); 

//on keydown, clear the countdown 
$('#UPC').keydown(function(){ 
    clearTimeout(typingTimer); 
}); 

function doneTyping() { 
//user is "finished typing," do something 
if (field.value.length != 0) { 
    document.getElementById("noScan").className="hidden"; 
    document.getElementById("checkout").className=""; 
    document.getElementById("void").className=""; 
    var upc=document.getElementById("UPC").value; 
    var price = document.write("<?php echo '375'; ?>"); 
    var weight = parseInt(document.getElementById("weight").value); 
    var table=document.getElementById("ScannedItems"); 
    var total = weight * price; 
    var row=table.insertRow(-1); 
    var cell1=row.insertCell(0); 
    var cell2=row.insertCell(1); 
    var cell3=row.insertCell(2); 
    var cell4=row.insertCell(3); 
    var cell5=row.insertCell(4); 
    var cell6=row.insertCell(5); 
    cell1.innerHTML=upc; 
    cell2.innerHTML="Example Description"; 
    cell3.innerHTML = "$" + price.toFixed(2); 
    cell4.innerHTML = weight + " lbs"; 
    cell5.innerHTML = "$" + total.toFixed(2); 
    cell5.setAttribute('data-total', total); // caches the total into data 
    cell6.innerHTML="<a class='add'><span class='glyphicon glyphicon-plus' style='padding-right:15px;'></span></a><a class='delete'><span class='glyphicon glyphicon-minus'></span></a>"; 
    field.value =''; 

    var total = cell5.getAttribute('data-total'); 
    var salesTax = Math.round(((total/100) * 8.25)*100)/100; 
    var totalAmount = (total*1) + (salesTax * 1); 

    document.getElementById('displaysubtotal').innerHTML="$" + (Math.floor(total * 100)/100).toFixed(2); 
    document.getElementById('displaytax').innerHTML="$" + salesTax; 
    document.getElementById('displaytotal').innerHTML="$" + totalAmount; 
} 
    } 


    // Duplicate a scanned item 
    var $table = $('#ScannedItems'); 
    $('#ScannedItems').on('click', '.add', function() { 
    var $tr = $(this).closest('tr').clone(); 

$table.append($tr); 
    }); 

    // Remove a line item 
    var $table = $('#ScannedItems'); 
    $('#ScannedItems').on('click', '.delete', function() { 
    var $tr = $(this).closest('tr').remove(); 
    }); 

Я должен выяснить, как получить информацию из моей базы данных для данного проекта или будет терпеть неудачу.

ответ

2

Javascript выполняет на стороне клиента, PHP выполняет на стороне сервера. Таким образом, PHP выполняется до запуска JS.

Итак, чтобы получить новые данные, вам необходимо инициировать вызов на ваш сервер. Вы можете сделать это, обновив страницу с нужными результатами или создав AJAX call.

Чтобы сделать его более понятным, ознакомьтесь с приведенным примером. Просмотрите исходный код в своем браузере. Он выйдет как document.write("375");. Это связано с тем, что PHP отправил строку «375» в ваш JS-код на стороне сервера перед отправкой страницы в браузер (где и выполняется JS-код).

PHP может генерировать JS-код, но JS не может генерировать PHP-код (в обычном смысле).

+0

Хорошо, поэтому я заново создал свой javascript для включения ajax. Теперь, как я могу получить вытащенные данные из базы данных обратно в javascript, чтобы отобразить его в таблице? –

+0

Что бы вы эхо в своем PHP-код будет как ответ AJAX. Я рекомендую вам пройти учебник по AJAX (поверьте мне, это того стоит ... вы снова будете использовать AJAX). Для этого использования я бы рекомендовал вам вывести свой ответ из PHP в формате JSON.Затем он будет получен вашим ответом на вызов AJAX как объект/массив JS, который вы можете прокрутить, чтобы создать строки в таблице. – Travesty3

2

PHP выполняется на сервере перед тем, как служить для генерации HTML-кода в браузере клиентов. Любой PHP-код, вставленный javascript на клиенте, не будет запущен.

Если вы хотите, чтобы динамический код был вставлен с PHP, вы можете выяснить, как использовать вызовы AJAX для запуска отдельного скрипта на PHP-сервере и вставить возвращаемое содержимое.

-2

Вы можете отлично использовать php внутри javascript, поскольку php выполняется до того, как javascript достигнет браузера. Таким образом, браузер получает страницу с выполненным результатом php, который строит предложение javascript ... браузер не знает, что предложение javascript было написано вами или сервером php.

document.write("<?php echo '375'; ?>"); 

попытка изменить его на ...

document.write("<?php echo("375"); ?>"); 

"" сначала рассматривается PHP-сервер, так что выше должен работать.

или просто в случае, если вы можете избежать "

У меня есть этот кусок кода полнофункциональную:

frameDoc.document.write sentence 

<?php 
echo("frameDoc.document.write(\""); 
require('secciones/seccion_head2.html'); 
echo("\");"); 
?> 

frameDoc.document.write sentence 

НО !!! в требуемом формате HTML, вы не можете использовать более одной строки !!!!

+1

Java - это не то же самое, что JavaScript. Другие ответы уже сказали, что PHP-код будет запущен первым, и вывод будет отправлен в браузер вместе с кодом JavaScript. Включение HTML с использованием PHP и document.write() - неплохая идея. И в довершение всего: на вопрос был запущен PHP из JavaScript, а не вывод JavaScript из PHP. –

+0

Ну, я все же думаю, что пользователь хочет сгенерировать javascript, используя php, но все остальные ответы просто видят простой ответ и говорят «вы не можете» ... но то, что ему нужно, это генерировать разные javascript в зависимости от ситуации, которую он обнаруживает используя php ... кстати на всякий случай я отредактировал мой ответ, чтобы быть более дружелюбным :) –

Смежные вопросы