0

次のスクリプトは、URLのリストにあるメタデータをフェッチします。

URLはフロントエンドで入力され、データを別のページ(このスクリプト)に取得できましたが、スクリプトが存在する同じページにテーブルをエコーする代わりに、そのデータをフロントエンドにフィードバックしたいと思います。そしてそれをユーザーが見ることができるように素敵なテーブルに置きます。

PHPスクリプトに別のページのデータをエコーさせるにはどうすればよいですか?

ありがとう

リッキー

<?php
ini_set('display_errors', 0);
ini_set( 'default_charset', 'UTF-8' );
error_reporting(E_ALL);
//ini_set( "display_errors", 0);
function parseUrl($url){
    //Trim whitespace of the url to ensure proper checking.
    $url = trim($url);
    //Check if a protocol is specified at the beginning of the url. If it's not,     prepend 'http://'.
    if (!preg_match("~^(?:f|ht)tps?://~i", $url)) {
            $url = "http://" . $url;
    }
    //Check if '/' is present at the end of the url. If not, append '/'.
    if (substr($url, -1)!=="/"){
            $url .= "/";
    }
    //Return the processed url.
    return $url;
}
//If the form was submitted
if(isset($_POST['siteurl'])){
    //Put every new line as a new entry in the array
    $urls = explode("\n",trim($_POST["siteurl"]));
    //Iterate through urls
    foreach ($urls as $url) {
            //Parse the url to add 'http://' at the beginning or '/' at the end if not     already there, to avoid errors with the get_meta_tags function
            $url = parseUrl($url);
            //Get the meta data for each url
            $tags = get_meta_tags($url);
            //Check to see if the description tag was present and adjust output     accordingly
            $tags = NULL;
$tags = get_meta_tags($url);
if($tags)
echo "<tr><td>$url</td><td>" .$tags['description']. "</td></tr>";
else 
echo "<tr><td>$url</td><td>No Meta Description</td></tr>";
    }
}

?>

この権利のためにAjaxを使用するのが最善だと思いますか?だからリフレッシュしない

4

2 に答える 2

1

次のいずれかを行う必要があります。

frontend1-代わりにそのページにこのPHPコードを含めて、ページに送信します。

2-AJAXを使用してフォームを投稿し、出力を取得してページのどこかに配置しfrontendます。

個人的には、最初の方法を使用します。実装が簡単です。

于 2012-04-25T10:55:40.997 に答える
1

私はajaxメソッドをはるかにクリーンなものとして好みます。

重要なのは$.ajax();echo json_encode()

ドキュメンテーション

phpマニュアルjson_encode()-http ://php.net/manual/en/function.json-encode.php

jqueryマニュアル-http $.ajax();: //api.jquery.com/jQuery.ajax/

応答コードのリスト-http ://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html

サンプルコード

あなたのHTMLを見ずに私はここで推測しています..しかしこれはあなたがajaxを使うための正しい道を始めるのに役立つはずです。

フォームhtml

<form action="<?= $_SERVER['PHP_SELF']; ?>" method="POST">
    <input type="text" name="siteUrl" id="siteUrl">
    <input type="submit" name="submit" value="submit" class="form-submit">
</form>

例-コンテナ

あなたの場合、これはテーブルです。テーブルIDをexample-containerに設定するだけです。

ajax

これには、jqueryライブラリを使用する必要があります。データテーブルと呼ばれる追加の別のライブラリを使用する場合は、このjqueryの追加の多くを合理化できます<tr>

// On the click of the form-submit button.
$('.form-submit').click(function(){
  $.ajax({
    // What data type do we expect back?
    dataType: "json",
    // What do we do when we get data back
    success: function(d){
      alert(d);
      // inject it back into a table called example-container
      // go through all of the items in d and append 
      // them to the table.
      for (var i = d.length - 1; i >= 0; i--) {
        $('#example-container').append("<tr><td>"+d[i].url+"</td><td>"+d[i].description+"</td></tr>");
      };

    },
    // What do we do when we get an error back
    error: function(d){
      // This will show an alert for each error message that exist
      // in the $message array further down.
      for (var i = d.length - 1; i >= 0; i--) {
        alert(d[i].url+": "+d[i].message);
      };
    }
  });
 // make sure to have this, otherwise you'll refresh the page.
 return false;
});

変更されたphp関数

<?php
//If the form was submitted
if(isset($_POST['siteurl'])){
    //Put every new line as a new entry in the array
    $urls = explode("\n",trim($_POST["siteurl"]));
    //Iterate through urls
    foreach ($urls as $url) {
        //Parse the url to add 'http://' at the beginning or '/' at the end if not     already there, to avoid errors with the get_meta_tags function
        $url = parseUrl($url);
        //Get the meta data for each url
        $tags[] = get_meta_tags($url);
     }
    if($tags):
        echo json_encode($tags);
    else:
        $message[] = array(
            'url' => $url,
            'message' => 'No Meta Description'
        );
                    // This sets the header code to 400
                    // This is what tells ajax that there was an error
                    // See my link for a full ref of the codes avail
                    http_response_code(400);
        echo json_encode($message);
    endif;
}
于 2012-04-25T13:27:33.720 に答える