通过提交按钮将PHP转换为JavaScript

时间:2014-11-11 12:08:20

标签: javascript php google-books

我正在开发个人开发应用程序并遇到了一些麻烦。相当新的PHP和JavaScript,所以帮助表示赞赏。

这是一个带有输入 sumbit 按钮的简单表单。用户输入ISBN号并点击搜索后,下方会显示一个div,其中显示包含标题,作者和说明的Google图书搜索结果。

我接近这个的方法是在我的javascript中使用var $isbn的内容。这可能是完全错误的做法,这就是为什么我在这里。基本上我想使用输入的ISBN编号并将其“附加”到Google图书搜索的末尾(见下文);

var url='https://www.googleapis.com/books/v1/volumes?q='[USER ISBN INPUT HERE];

如果我手动将var $ isbn设置为'0276427343' - 我会收到图书结果并成功查看div内容。只是当它们被表格发布到var $ isbn。

我将按现在的方式显示我的代码;

HTML表单

<form name="form" method="post" action="">               
<input name="isbn_search" id="isbn_search" type="text">                
<button id="submit" name="submit">search</button>      
</form>

PHP

if(isset($_POST['isbn_search'])){ 
$isbn = $_POST['isbn_search'];
}

JaveScript

$(document).ready(function() {
var isbn = <?php echo $isbn; ?>;
var url='https://www.googleapis.com/books/v1/volumes?q='+isbn;
$('#submit').click(function() {
    $.getJSON(url,function(data){
        $('.result').empty();
        $.each(data.items, function(entryIndex, entry){
            var html = '<div class="results well">';                    
            //html += '<h3>' + entry.id + '</h3>';
            html += '<h3>' + entry.volumeInfo.title + '</h3>';                  
            html += '<div class="author">' + entry.volumeInfo.authors + '</div>'; 
            html += '<div class="description">' + entry.volumeInfo.description + '</div>';  
            $('.result').append(html);
        });                        
    });
    return false;
    });
});

欢迎任何帮助和/或建议。

5 个答案:

答案 0 :(得分:2)

您的问题是因为表单永远不会提交(您使用javascript停止它)。

然而,php是不必要的,你可以用js:

提取值
$(document).ready(function() {

    $('#submit').click(function(ev) {
        ev.preventDefault();
        var isbn = $('#isbn_search').val(); //get isbn direct from input, no need for php
        var url='https://www.googleapis.com/books/v1/volumes?q='+isbn;
        $.getJSON(url,function(data){
            $('.result').empty();
            $.each(data.items, function(entryIndex, entry){
                var html = '<div class="results well">';                    
                //html += '<h3>' + entry.id + '</h3>';
                html += '<h3>' + entry.volumeInfo.title + '</h3>';                  
                html += '<div class="author">' + entry.volumeInfo.authors + '</div>'; 
                html += '<div class="description">' + entry.volumeInfo.description + '</div>';  
                $('.result').append(html);
            });                        
        });
    });
});

答案 1 :(得分:1)

在实现这些之前,你应该尝试理解javascript和php的基本概念。

您希望实现的目标是将客户端提供的ISBN发送到服务器。

客户端运行Javascript(由浏览器解释) - 服务器运行php(在请求时由服务器解释)

基本的经典概念: 将HTML CSS JAVASCRIPT(HTML5)拆分为您的客户端,并让它完成所有客户端操作 让你的PHP做所有服务器的东西。

您现在可以通过不同的方式向PHP服务器脚本发送信息 - 通过ajax或使用已定义的操作属性提交表单

我希望这会有所帮助 - 你首先不需要代码的帮助 - 花一些(2-3)小时来理解这些概念 - 然后回来试着让你的代码正确:)

我希望这会有所帮助

答案 2 :(得分:1)

我认为在这种情况下你不需要使用PHP。

但只是试试这个:

<div>               
   <input id="isbn_search" type="text">                
   <button onclick="do_search();" id="submit" name="submit">search</button>      
</div>
<div class="result"></div>


<script>
function dosearch(){

var isbn = document.getElementById('isbn_search').value; //$('#isbn_search').val(); : if you like jquery :D
var url='https://www.googleapis.com/books/v1/volumes?q='+isbn;

$.getJSON(url,function(data){
        $('.result').empty();
        $.each(data.items, function(entryIndex, entry){
            var html = '<div class="results well">';                    
            //html += '<h3>' + entry.id + '</h3>';
            html += '<h3>' + entry.volumeInfo.title + '</h3>';                  
            html += '<div class="author">' + entry.volumeInfo.authors + '</div>'; 
            html += '<div class="description">' + entry.volumeInfo.description + '</div>';  
            $('.result').append(html);
        });  

        //here we send this query to database (thanks to AJAX):
        //=====================================================
        $.ajax({
             type: 'POST',
             url: './db_insert.php',
             data: {'isbn' : isbn },
        });                      
    });

}
</script>

如果要将搜索保存在数据库中,

我们创建一个php文件:db_insert.php

<?php

// first : init access to data base :
//====================================
$user="root";   //user of database
$pass="";       //password of database
$db="test";     //name of database
$host = "localhost";   //host name

$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
$bdd = new PDO('mysql:host='.$host.';dbname='.$db, $user, $pass, $pdo_options);
$bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
$bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$bdd->query("SET NAMES 'utf8'");



//second : insert in a table named "all_search" in this case :
===============================================================
    $req = $bdd->prepare('INSERT INTO all_search(isbn, date_in) VALUES(:isbn, :date_in)');
    $req->execute(array(
        'isbn'      => $_POST['isbn'],
        'date_in'   => date('Y-m-d H:i:s')
    ));


//emm... I think thats all, Enjoy :D

?>

答案 3 :(得分:0)

这是因为您试图将用户输入的ISBN输入$ _POST。您的JS基于按钮单击的位置。所以你不能通过这种方式获得isbn字段值。

将您的JS更改为以下。

var isbn = $('#isbn_search').val();

不需要PHP代码。

if($_POST....

答案 4 :(得分:-1)

我不确定我是否理解你是正确的,但您可以使用json从PHP返回ISBN号,然后在JavaScript中使用它。

<?php
$isbn = $_POST['isbn'];
json_encode($isbn);

?>