2013-02-23 8 views
0

Я создаю сценарий Greasemonkey, где я вычисляю шесть переменных (время, перемещение, прокрутка, sav, prin, book и url).Как отправить данные с сервера Greasemonkey на сервер PHP (WAMP)?

Мне нужно отправить данные этих переменных на мою страницу PHP, чтобы их можно было вставить в таблицу MySQL с использованием сервера WAMP.

Возможно, кто-нибудь может дать точный код, поскольку я новичок ко всему этому?

Мой Greasemonkey скрипт:

{var ajaxDataObj = { 
    s:  sav, 
    p:  prin, 
    b:  book, 
    t:  finalTime, 
    u:  url, 
    a:  totalScroll, 
    b:  tot 
}; 

var serializedData = JSON.stringify (ajaxDataObj); 

GM_xmlhttpRequest ({ 
    method: "POST", 
    url: "localhost/anuja/greasemonkey.php", 
    data: serializedData, 
    headers: { 
     "Content-Type": "application/json", 
     "User-Agent": "Mozilla/5.0", // If not specified, navigator.userAgent will be used. 
     "Accept": "text/xml"   // If not specified, browser defaults will be used. 
} } 


и PHP сторона:

$jsonData = json_decode($HTTP_RAW_POST_DATA); 

echo jsonData.u; 


этот код не работает .. Кроме того, я стараюсь, чтобы проверить, если моя переменная u была прошел с использованием jsonData.u, но он просто перекликается с «jsonData.u».

+0

Почему вы реализуете это в greasemonkey, а не в обычном javascipt (который вы надели на своем сервере)? – wimh

+0

@Wimmel, это было бы потому, что сценарий GM работает на странице, которую он не обслуживает/не контролирует. –

+1

См. Http://stackoverflow.com/questions/9401009/greasemonkey-ajax-request-is-not-sending-data –

ответ

0

Я просто создаю usercript, чтобы сделать данные Greaseemonkey scrape с открытой страницы и параметры POST скрипту PHP, размещенному на моем локальном сервере XAMPP, который может запускать локальные скрипты Python для автоматизации работ.

Это также прохладный способ scrping данных Javascript визуализации страниц, которые трудно для Python скребки, даже лучше, чем селен: P

Параметров разделённых & в этом PHP Пример URL:

http://www.sciencedirect.com/search?qs=Vascular%20stent&authors=&pub=&volume=&issue=&page=&origin=home&zone=qSearch&offset=1200 

GM скрипт часть:

// @grant  GM_xmlhttpRequest 
unsafeWindow.sendPhp2Py = function(){ 
    //var ytitle = 'Youtube - ' + document.querySelector('div.yt-user-info').textContent.trim(); 
    var yurl = document.location.href; 
    //console.info(ytitle); 
    //console.info(yurl); 
    var ret = GM_xmlhttpRequest({ 
     method: "POST", 
     url: "http://localhost/php_run_py.php", 
     //data: "ytitle="+ ytitle + "&yurl="+ yurl, 
     data: "yurl="+ yurl, 
     headers: { 
      "Content-Type": "application/x-www-form-urlencoded" 
     }, 
     onload: function(response) { 
      console.log(response); 
      // readyState 4 = complete 
      // status = 200 OK 
      if(response.readyState == 4 && response.status == 200){ 
       document.querySelector('#myPhpPyBtn').textContent = 'Sent to PHP!'; 
      } 
     }, 
     onerror: function(e){ 
      console.log(e); 
      document.querySelector('#myPhpPyBtn').textContent = 'PHP not connected'; 
     } 
    }); 
}; 

PHP scipt:

<?php 
    echo $_POST['yurl']; 
//传递多个参数如下可以行得通 参数里包含空格哦也可以!!赞 Multiple parameters pass 
    //echo shell_exec("python test.py \"".$_POST['ytitle']."\" \"".$_POST['yurl']."\""); 
    //echo shell_exec("python GreaseMonkey_Php_Youtube_srt_generator.py ".$_POST['yurl']); 
//更安全 Safer 
    //system(escapeshellcmd("python test.py \"".$_POST['ytitle']."\" \"".$_POST['yurl']."\"")); 
    system(escapeshellcmd("python GreaseMonkey_Php_Youtube_srt_generator.py ".$_POST['yurl'])); 
?> 

Python тестового скрипт:

#coding=utf-8 
import sys 
f = open("test.txt", "a+") 
f.write(sys.argv[1] + "\n" + sys.argv[2]+ "\n") 
f.close() 
print ("some output") 

Надеется, что это может помочь!

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