2012-01-22 2 views
0

фонаИспользование JQuery и PHP для отображения данных

Я не знаю много о PHP или JQuery, и мне было интересно, если то, что я пытаюсь сделать, это возможно. У меня есть сервер с доступом к базе данных за брандмауэром. Я хочу использовать jQuery для вывода данных на PHP-скрипт внешнего сервера каждые 5 секунд, где он будет отображаться публично. У этого внешнего сервера нет доступа к базе данных, о которой я знаю. Если это возможно, что мне нужно будет вставить в PHP-скрипт?

Что я так далеко

internalServer.js:

function timedPost() { 
    $.ajax({ 
     type: 'POST', 
     url: 'http://externalserver/display.php', 
     crossDomain: true, 
     data: '{"some":"json"}', 
     dataType: 'json' 
    }); 
    setTimeout("timedPost()", 5000); 
} 

externalServer.php

<?php 
    switch ($_SERVER['HTTP_ORIGIN']) { 
     case 'http://internalServer': case 'https://internalServer': 
     header('Access-Control-Allow-Origin: '.$_SERVER['HTTP_ORIGIN']); 
     header('Access-Control-Allow-Methods: POST, GET, OPTIONS'); 
     header('Access-Control-Max-Age: 1000'); 
     header('Access-Control-Allow-Headers: Content-Type'); 
     break; 
    } 
?> 
+0

Исправить это! 'data: {some:" json "}' и 'setTimeout (timedPost, 5000);' – noob

+0

У вас есть проблемы с использованием [CORS] (https://developer.mozilla.org/En/HTTP_access_control)? – greut

ответ

0

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

Посмотрите, что у вас уже есть, во-первых - вы не сказали. Предположительно, externalServer.php также выполнил бы регистрацию данных, в которой вы нуждаетесь? Используйте Firefox/Firebug или инструмент dev в Chrome/Safari, чтобы посмотреть, как работает AJAX, и посмотреть, возвращается ли он с кодом ответа HTTP 200 (все было в порядке).

Если это не сработает, выполните операцию AJAX на своем собственном сервере, а затем внутри кода PHP, который обрабатывает это, используйте завиток или подобное, чтобы отправить данные на другой скрипт на внешнем сервере. Это «проксирование» HTTP-запроса, и, хотя для этого требуется другой запрос/ответный прыжок, вероятно, я сделаю это.

Редактировать: aaahhhh, я вижу, почему у вас есть инструкции header() выше. Вы хотите, чтобы ваш скрипт выполнял ведение журнала AJAX и вашего дисплея на внешнем сервере. Это невозможно - есть один скрипт для ведения журнала AJAX, а другой - для отображения. Как я предлагаю в комментариях, войдите в локальный файл (или в базу данных sqlite, которая является просто файлом) и отобразите эти данные с помощью другого сценария.

+0

Я должен был упомянуть, что получаю код статуса 200 в Firebug, поэтому, полагаю, это означает, что данные отправляются и получаются в порядке? Я практически ничего не знаю о PHP. Можете ли вы или кто-либо другой в этом отношении направлять меня к написанию кода, необходимого для отображения/чтения/хранения/любых данных, которые я получаю в POST, если это имеет смысл? –

+0

Да, 200 - хороший знак. Если вы проверите правильную вкладку в Firebug, вы также увидите, правильно ли отправляются данные. Если это тоже хорошо, то все, что вам нужно сделать в externalServer.php, - это регистрировать данные. Конечно, вы можете использовать базу данных, но если у вас нет одной руки, запишите ее в файл и получите другой скрипт для ее отображения (см. Мое редактирование). – halfer

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