嘿,我想使用此代码(js)从网站抓取数据
var i = 0
var oldValue = -1
var interval = setInterval(get, 3000);
function get(){
var x= $($('.table-body')[1]).find('.h-col-1')
if(i!=5){
if(oldValue != x){
oldValue = $(x[1]).text()
console.log($(x[1]).text())
++i
sendPost($(x[1]).text())
}
}else clearInterval(interval)
}
function sendPost(par) {
var te= $.ajax({
type: "POST",
dataType: 'jsonp',
url: 'http://localhost/sa.php',
data: {json:JSON.stringify({
num : par
}) },
}).done(function( data ) {
console.log("done");
})
.fail( function(xhr, textStatus, errorThrown) {
console.log(xhr.responseText);textStatus
});
console.log(te)
从本地主机发送数据并保存在我的sql和此php代码中
sa.php
<?php
header('Access-Control-Allow-Origin: *');
$sitename = "http://localhost/";
$hostname = "localhost";
$username = "root";
$password = "";
$database = "db";
$connect = mysqli_connect($hostname, $username, $password, $database);
$insert = "INSERT INTO main(number, time, date) VALUES ('%s','%s','%s','')";
$data = json_decode(file_get_contents("php://input"), true);
$result = mysqli_query($connect,sprintf($insert,$data['num'] ,date("H:i:s"),date("Y-m-d")));
?>
然后
从本地服务器的js请求成功发送,为什么不保存在我的sql上?
答案 0 :(得分:3)
我认为答案在于您的插入查询:
$insert = "INSERT INTO main(number, time, date) VALUES ('%s','%s','%s','')";
请计算定义的列数和您要插入的值数。显然,这两个应该匹配。
如果您想弄清楚MySQL查询失败的原因,只需打印或记录错误: http://php.net/manual/en/mysqli.error.php
答案 1 :(得分:2)
您应该检查file_get_contents("php://input")
的值。
在发送键值对时:
data: {json:JSON.stringify({
num : par
}) },
您应该使用$_POST['json']
获取数据。
所以:
$data = json_decode($_POST['json'], true);
另一种方法是,更改javascript而不是php,就像这样:
data: JSON.stringify({
num : par
}),
但是,老实说,我不知道jQuery如何处理这些数据,因此可能需要进行一些调整。
除此之外,您还有一个sql注入问题;您应该使用带有绑定参数的预备语句。