我正在开发个人开发应用程序并遇到了一些麻烦。相当新的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;
});
});
欢迎任何帮助和/或建议。
答案 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);
?>