javascript - 在不刷新页面的情况下将变量从 JavaScript 传递到 PHP

标签 javascript php html xpath domdocument

我正在编写一些代码,其中包含一个 JavaScript 变量,该变量必须传递到同一文档中的 PHP 脚本中。用户输入将用于从某些外部站点抓取。

JavaScript 变量是 HtmlLink ,并且需要将其传递到 PHP 代码,其中显示 INSERT HTMLLINK VARIABLE HERE无需重新加载页面。

<!DOCTYPE HTML>
<HEAD>
   <TITLE>Test Input</TITLE>
   <SCRIPT>
      type = "text/javascript"
      function testResults (form) {
         var TestVar = form.inputbox.value + ".html";
         var HtmlLink = "www.mp3skull.com/mp3/" + TestVar;
         document.write(HtmlLink);
      }
   </SCRIPT>
   <?php
      $contents = file_get_contents('INSERT HTMLLINK VARIABLE HERE');
      $dom = new DOMDocument();
      libxml_use_internal_errors(true);
      $dom->loadHTML($contents);
      libxml_clear_errors();
      $xpath = new DOMXpath($dom);

      $element = $xpath->query('//div[@id="right_song"]/div[3]/div[1]/div[1]/a')->item(0)-                    
      echo $element;  
   ?>  
</HEAD>
<BODY>
   <FORM NAME="myform" ACTION="" METHOD="GET"> Song Name <BR>
      <INPUT TYPE="text" NAME="inputbox" VALUE=""><P>
      <INPUT TYPE="button" NAME="button" Value="Search" onClick="testResults(this.form)">
   </FORM>
</BODY>
</HTML>

最佳答案

如果你想做一些搜索,首先当然要先构建正确的 URL,然后从那里搜索/抓取网站,实际上基本代码已经在工作,所以是时候在此基础上进行构建了。你可以这样做:Sample Demo

$main_url = 'http://www.mp3skull.com/mp3/';
$results = array();

if(isset($_POST['submit'])) {
    // handle input (sample: hot mallets)
    $input = preg_replace('/[\s]+/', '_', strtolower(trim($_POST['input'])));
    $main_url .= $input . '.html'; // turns to hot_mallets.html

    $contents = @file_get_contents($main_url);
    if($contents !== false) { // simple error checking

        $dom = new DOMDocument();
        libxml_use_internal_errors(true);
        $dom->loadHTML($contents);
        libxml_clear_errors();
        $xpath = new DOMXpath($dom);

        $search_results = $xpath->query('//div[@id="song_html"]');
        if($search_results->length > 0) {
            foreach($search_results as $result) {
                // each row result, put it inside the array
                $results[] = $xpath->query('//div[@id="right_song"]/div[3]/div[1]/div[1]/a', $result)->item(0)->getAttribute('href');
            }
        } else {
            echo 'Zero results';
        }


    } else {
        echo 'Some error on getting results from external site.';
        exit;
    }
}

?>

<form method="POST">
    <label for="inputbox">Song Name: <input type="text" id="inputbox" name="input"/ ></label>
    <input type="submit" name="submit" />
</form>
<?php if(!empty($results)): ?>
<h3>Search Results:</h3>
<ul>
    <?php foreach($results as $result): ?>
        <li><?php echo $result; ?></li>
    <?php endforeach; ?>
</ul>
<?php endif; ?>

关于javascript - 在不刷新页面的情况下将变量从 JavaScript 传递到 PHP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24921829/

相关文章:

javascript - css opacity ease in out 影响其他元素

javascript - 按类(class)点击按钮

PHPEXCEL : How to merge excel row based on array value

php - Laravel 5.2 - srmklive/laravel-paypal 问题

html - 复选框轮廓边框颜色在 IE 浏览器中显示不正确

javascript - 如何使用按钮加载 html 中的 .js 文件

html - 如何使用 CSS 在多行文本上创建波浪下划线?

javascript - Sails.js 日志传输取决于环境

javascript - 是否可以在下拉菜单中使用 css 样式选择选项?

php - 如何使用php在mysql数据库中添加照片?