<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.title
和this.link
值保存到2个不同的变量中,然后将它们调用到php中,以便将数据插入数据库?
搜索rss Feed只是一个简单的YQL
查询。
执行查询后,我希望将结果保存在数据库中,但我无法发现如何执行此操作。
答案 0 :(得分:0)
首先,您必须了解您正在使用客户端 - 服务器架构。
这意味着:
在您的情况下,文件&#34; TestYQL.php&#34;你拥有的所有PHP都是<? Php ....?>
标签内的内容。使用php,您可以创建2个变量,每个变量都带有一个标记,但没有任何用途,因为它们没有以任何方式使用。那么,生成的&#34; GeneratedTestYQL.html&#34; file与原始文件相同,但没有<? Php ...?>
内的行。
这意味着:您在PHP中使用的变量的内容可以发送到浏览器,因为使用PHP,您将生成将在浏览器中执行的文件。
现在,当文件&#34; GeneratedTestYQL.html&#34;到了,浏览器开始显示文件的所有内容,它生成表单,当你单击按钮时,执行函数 pesquisa(),现在启动javascript(JQuery)带来的数据饲料,这是第一次,这些变量&#34; this.title&#34;和&#34; this.link&#34;开始存在于javascript中。
由于这里没有php这样的东西,你可以 NOT 从php访问这些变量。
那么,如何将数据保存在数据库中?通常的方法是将所需的所有数据从浏览器发送到服务器,然后服务器就会知道该如何处理这些数据。要将数据从浏览器发送到服务器,您可以通过从服务器向php文件发出GET或POST请求来执行此操作(最好是另一个文件,让我们说它将被调用&#34; saveFeeds.php&#34 ;)
可以使用GET请求发送数据,但它在语义上不正确,因为GET意味着您要从服务器获取数据。因此,要将该数据发送到服务器,您必须从浏览器发出POST请求,这更合适。
现在有2种简单的方法可以发出POST请求。其中第一个也是最常见的是来自浏览器中的表单,另一种方式是使用Ajax。
如何从表单中执行此操作?
目前在您的代码中,您已经放置了一个表单(称为&#34; s2&#34;),虽然目前没有必要,但现在就离开。 如果您想通过表单发送数据,您应该做两件事。首先,最明显的是,创建表单;第二,从互联网接收的数据(标题和饲料链接),将它们发送到服务器。
假设您从每个网址的单个Feed中获取数据,并且负责接收请求的指定文件将是&#34; saveFeeds.php&#34;。因此,您可以在上一个表单之后创建如下表单:
<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>
然后您需要将Feed数据放在表单中,因为此时您无法发送任何内容。您可以添加如下函数:
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。
现在,从客户端向服务器发送数据,必须处理数据的接收。目前我们将所有数据都指向文件&#34; saveFeeds.php&#34;,所以,现在,最后我们可以把来自javascript的内容。要访问它们,只需在该文件中,您应该检查字段:
$ _POST ['title'] // This names are from input names of form
$ _POST ['link'] // or properties sended through Ajax
因此,在这里,您必须准备与数据库的连接并保存这些参数。目前你没有提到你正在使用哪个数据库引擎,所以,在这一刻,我将在这里缩短答案。
注意:我没有给你解决问题的最佳做法,而是最低限度的必要。