2017-04-02 39 views
1
<html> 
<head> 
    <meta charset="utf-8"> 

    <title>Test page for Query YQL</title> 

    <link rel="stylesheet" href="http://hail2u.github.io/css/natural.css"> 

    <!--[if lt IE 9]><script src="http://hail2u.github.io/js/html5shiv.min.js"></script><![endif]--> 
</head> 
<body> 
    <h1>Test page for Query YQL</h1> 

    <div id="content"></div> 

    <input type="button" name="bt1" value="click" onclick="pesquisa()"> 

    <form name="s2"> 
    <input type="text" name="s1"> 
    </form> 

    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script> 
    <script src="jquery.query-yql.min.js"></script> 
    <script type="text/javascript"> 

    function pesquisa(){ 

     $(function() { 

     var t = $('#content').empty(); 
     var url= document.s2.s1.value; 
     var statement = 'select * from feed where url="'+url+'"'; 

     $.queryYQL(statement, function (data) { 
      $('<h2/>').text('Test: select * from feed').appendTo(t); 
      var r = data.query.results; 
      var ul = $('<ul/>'); 

      $.each(r.item, function() { 

      $('<li/>').append(this.title).appendTo(ul); 
      $('<li/>').append(this.link).appendTo(ul); 

      <?php 

       $titulo = "<script>document.write(titulo);</script>"; 

       $site = "<script>document.write(site);</script>"; 

       //echo $titulo; 
       //echo $site; 

      ?> 
      }); 
      ul.appendTo(t); 
     }); 
     }); 
    }; 

    </script> 
</body> 
</html> 

如何將this.titlethis.link值保存到2個不同的變量中然後將它們調用到php中,以便將數據插入到數據庫中?如何保存附加到變量然後將它們轉換爲PHP,以便您可以將它們保存在數據庫中?

這只是一個簡單的YQL查詢,以便對RSS源搜索。

做查詢後,我希望結果保存在數據庫中,但我無法找到如何做到這一點。

+0

使用ajax將數據從jquery傳遞給PHP,並在php腳本中執行數據庫插入過程。 –

+0

我對阿賈克斯一無所知,你能給我一些指導嗎? –

回答

0

首先,您必須瞭解您正在開發客戶端 - 服務器體系結構。

這意味着:

  • 比方說,這個文件你向我們展示被稱爲「TestYQL.php」(因爲你沒有說,它的名字)。這個文件由php(服務器端)執行,它逐行讀取它的內容,並從原始文件生成另一個新文件。爲了教育目的,假設生成的文件被稱爲「GeneratedTestYQL.html」。這個文件不再有任何php代碼,因爲它直接是html和js flat。它對於php一無所知。所以沒有PHP函數,變量,什麼都沒有。這最後一個文件是到達客戶端的代碼,代碼由像Chrome,Firefox等網絡瀏覽器執行。

在你的情況下,文件「TestYQL.php」你所有的PHP是<? Php ....?>標籤裏面有什麼。使用php,你創建了兩個變量,每個變量都有一個標籤,但沒有任何用途,因爲它們沒有以任何方式使用。因此,生成的「GeneratedTestYQL.html」文件與原始文件相同,但沒有<? Php ...?>內的行。

這意味着:您在PHP中使用變量的內容可以被髮送到瀏覽器,因爲PHP,你會產生將在瀏覽器中執行的文件。

現在,當文件「GeneratedTestYQL.html」到達時,瀏覽器開始顯示文件的所有內容,它產生了表單,當您單擊該按鈕,執行相應的功能pesquisa()和現在開始使用JavaScript(JQuery)引入提要的數據,並且第一次,這些變量「this.title」和「this.link」開始在javascript中存在。

由於在這裏沒有這樣的東西,你可以不是從php訪問這些變量。

那麼,如何保存在數據庫的數據?不錯,常用的方法是你從瀏覽器想要的數據,發送到服務器,然後服務器認爲如何處理這些數據做。要將數據從瀏覽器發送到服務器,可以通過向服務器發送GET或POST請求到一個php文件(最好是另一個文件,假設它將被稱爲「saveFeeds.php」)來完成。

數據可以用GET請求被髮送,但因爲GET意味着你想從服務器獲取數據是語義上不正確。因此,要將這些數據發送到服務器,您必須從瀏覽器發出POST請求,這更合適。

現在有兩種簡單的方法可以發出POST請求。這些中的第一個也是最常見的來自瀏覽器中的表單,另一種方式是使用Ajax。

如何從表單中執行此操作?

目前在您的代碼中,您已經放置了一個表格(稱爲「s2」),雖然目前不需要,但現在就離開。 如果你想通過表單發送數據,你應該做2件事情。首先也是最明顯的,創建表單;其次,從互聯網收到的數據(標題和Feed的鏈接),將它們發送到服務器。

假設您從每個網址的單個Feed獲取數據,並且負責接收請求的指定文件將爲「saveFeeds.php」。所以,你可以一前一後創建類似下面的形式:

<Form class = "sender" action = "saveFeeds.php" method = "post"> 
  <Input type = "hidden" name = "title" value = ""> <br> 
  <Input type = "hidden" name = "link" value = ""> <br> 
  <Input type = "submit"> 
</ Form> 

然後,你需要把表格內的飼料數據,因爲,在這一刻,你無法發送任何東西。你可以添加一個功能,如:

Function appendFeedToForm (title, link) { 
  Var form = $ (". Sender"); 
  Form.title.value = title; 
  Form.link.value = value; 
} 

然後從結果的$ .each內部稱其爲 AppendFeedToForm(this.title, this.link);

第二種情況下,最簡單的方法,使使用Ajax相同文件的請求使用JQuery快捷鍵:

$.post("saveFeeds.php", r.item); 

如果您對驗證感興趣,可以查看JQuery文檔。關於Ajax請求的重要之處在於,您可以發送所需的所有數據,而不必強制您重新加載頁面。因此,您可以按照發送方式發送儘可能多的Feed。

現在隨着從客戶端發送到服務器的數據,有必要處理數據的接收。目前我們將所有數據都指向文件「saveFeeds.php」,所以,現在,我們最終可以從javascript中提取內容。要訪問它們,只需在該文件中,你應該檢查的字段:

$ _POST ['title']  // This names are from input names of form 
$ _POST ['link']  // or properties sended through Ajax 

所以,在這裏,你已經TP準備數據庫的連接,並保存這些參數。目前你沒有提到你正在使用哪個數據庫引擎,所以,現在我會在這裏縮短答案。

注:我沒有給你最好的實踐來解決你的問題,而是最低限度的必要。

+0

感謝Francute的幫助! –

相關問題