Как получить информацию о сервере в javascript?
-
22-07-2019 - |
Вопрос
Я не знаю, как задать этот вопрос, поэтому я собираюсь смоделировать то, что мне нужно, некоторые разработчики создают то, что мне нужно, рендеря javascript с помощью php.Простой пример файла будет выглядеть следующим образом:
my_javascript_file.php
<?php include "my_class.php"; ?>
$(document).ready(function(){
$.ajax({
url: "<?php $my_obj->post_url(); ?>",
success: function(){
alert("Post successful")
}
});
};
который выводит следующие:
$(document).ready(function(){
$.ajax({
url: "/post_handler.php",
success: function(){
alert("Post successful")
}
});
};
отсюда возникает мой вопрос: есть ли какой-нибудь способ достичь этого с помощью чистых методов js?
Спасибо, Синан.
P.S.Это всего лишь простой пример, конечно, я могу жестко закодировать URL-адрес публикации здесь или получить URL-адрес по объекту location и т.д. С помощью javascript, я надеюсь, вы понимаете, что я имею в виду...
Редактировать: Извините за путаницу в терминах, которые я использовал, это просто получение некоторой информации из моего приложения и динамическая запись в мой javascript.Я не имею в виду комету, кодирование данных и т.д.
Что я хочу знать, так это как использовать данные на стороне сервера в файлах javascript (если есть какой-либо способ).Подобно тому, что делает php-метод в моем примере, он просто повторяет строку, которая поступает из моего приложения.Есть ли способ сделать это с помощью библиотеки javascript или фреймворка, например шаблонизатора, которому вы назначаете переменные и используете его в этой системе шаблонов.Надеюсь, теперь это более понятно.
Решение
Да, есть способ, но он странный.Вы можете использовать сервер jaxer.Это позволяет вам запускать javascript на сервере.
Редактировать:
Как я уже сказал в своем комментарии, я не думаю, что вы хотите загружать дополнительный js на клиент, чтобы реализовать механизм создания шаблонов.Вероятно, это разделение или развязка, о которой вы говорите.В этом случае вы могли бы иметь следующее в отдельном js-файле:
var myObject = {
var1 : '',
var2 : 0,
init : function(options) {
var1 = options.var1;
var2 = options.var2;
$('#someElem').click(function() {
// do stuff
return false;
};
}
};
а затем вызовите это следующим образом со своей html-страницы
<head>
<script type="text/javascript">
var options = {
var1 : <?php echo "hello" ?>,
var2 : <?php echo 1 ?>
}
myObject.init(options);
...
Другие советы
я не уверен, что понимаю, что вы подразумеваете под "толчком" ...если это настоящий толчок сервера, вы должны посмотреть на комета Серверы...
кроме того, для меня неясно, что такое "чистые методы js" ...конечно , вы можете сделать это без jQuery ...но чистого JS, как языков, в первую очередь предназначенных для управления DOM, конечно, будет недостаточно ...вам нужны подходы , подобные AJAX ...однако было предложение для push в HTML5, но да, это займет некоторое время ...
так что я надеюсь , что это поможет ...но, может быть, вам следует немного прояснить свой вопрос, я уверен, вы получите лучшие ответы ...:)
приветствие
back2dos назад 2dos
Вы могли бы запросить у сервера URL-адрес, используя .получить или . "аякс " (предполагая, что ваш urls.php
обработает это должным образом и вернет соответствующую строку - или JSON, и в этом случае вы также можете использовать .Получить JSON - с указанным в нем URL-адресом).Например (непроверенный, конечно):
$.get("urls.php", { operation: "post_handler" },
function(data){
$.ajax({
url: data,
data: eventData,
success: function(){
alert("Post successful");
}
});
});
================= Редактировать:Новый Потенциальный Ответ =====================
Допустим, вам удается извлекать объекты данных JavaScript с сервера, хотите ли вы внедрить полученные вами данные JavaScript в свою HTML-разметку на стороне клиента?
Если это так, вы могли бы взглянуть на IBDOM: http://ibdom.sf.net/
Я написал это, мы разрабатывали это на нескольких сайтах в течение нескольких лет.
================= Старый Ответ Ниже ====================
Итак, вы хотите, чтобы "EventData" было "чем-то", что может быть использовано JavaScript.
Я бы рекомендовал сначала взглянуть на JSON в PHP:
[УДАЛЕНА ссылка на JSON в PHP, не нужна]
Тогда ваш PHP-код может напоминать это:
<?php include "my_class.php"; ?>
$(document).ready(function(){
$.ajax({
url: "<?php $my_obj->post_url(); ?>",
data: <?php json_encode ($my_obj->getData()); ?>,
success: function(){
alert("Post successful")
}
});
};
Итак, идея здесь в том, что значение вашего поля "data:" станет графом объектов JSON, сгенерированным PHP на сервере.