1

这是我的 wp 帖子底部的 js 脚本。

<script type="text/javascript" src="jquery-1.10.2.min.js">
</script>
<script type="text/javascript">

var id = 'downloadid';

var data_from_ajax;

$.post('download.php', {id : id}) .done(function(data) {
  data_from_ajax = data;
});

function hey() {
document.write(data_from_ajax);
}

</script>

函数 hey 是从链接 OnClick 函数调用的。使用它时,该页面将成功执行下载 php 的 php 代码(更新数据库然后下载文件),尽管它会清除我所在的当前页面。我想做的是执行 php 并保留当前页面模板。所以接下来我尝试使用

document.getElementById("download").innerHTML = data_from_ajax;

而不是 document.write。我用 id 下载了一个 div。现在,当我单击它时,它根本不会执行 php.ini。当我用字符串替换 data_from_ajax 时,它很乐意将其放入 div 中。

任何帮助都会很棒。

编辑:我的 html 是

<a href="#" onClick="hey()">download</a>

<div id='download'>&nbsp</div>

http://jsfiddle.net/7smJE/

4

2 回答 2

1

从没有小提琴的情况下我可以看到:

hey函数可能在done函数准备好之前被触发。你为什么不hey()从内部打电话done()

于 2013-09-13T19:36:53.067 回答
1

从您提供的 PHP 代码中,我认为您应该document.write()在代码中替换为$('#download').html(). 这样您就不需要再将返回的结果放入您的downloaddiv 中,因为当 PHP 页面被加载时,它会为您执行此操作,并且您也必须放入您的$.postinhey()函数,因为您需要在单击链接时执行此操作。

PHP:

<?php
$fileid = $id;
if (is_file('d84ue9d/' . $fileid . '.apk'))
{
$ip = $_SERVER['REMOTE_ADDR'];
$con=mysqli_connect("localhost","docvet95_check","%tothemax%","docvet95_downcheck");
$result = mysqli_query($con,"SELECT * FROM `download-check` where ip = '$ip'");
while ($row = mysqli_fetch_array($result))
{
$files = $row['files'];
$downloads = $row['downloads'];
}
if ($downloads > 4)
{
print "$('#download').html(unescape('%3C%73%63%72%69%70%74%20%74%79%70%65%3D%22%74%65%78%74%2F%6A%61%76%61%73%63%72%69%70%74%22%3E%0A%61%6C%65%72%74%28%27%59%6F%75%5C%27%76%65%20%64%6F%77%6E%6C%6F%61%64%65%64%20%66%69%76%65%20%6F%72%20%6D%6F%72%65%20%66%69%6C%65%73%2E%20%46%6F%72%20%72%69%67%68%74%20%6E%6F%77%2C%20%74%68%69%73%20%69%73%20%6F%6B%61%79%2E%20%49%6E%20%74%68%65%20%66%75%74%75%72%65%2C%20%79%6F%75%20%77%69%6C%6C%20%6E%65%65%64%20%74%6F%20%63%6F%6D%70%6C%65%74%65%20%61%20%73%75%72%76%65%79%20%69%6E%20%6F%72%64%65%72%20%74%6F%20%63%6F%6E%74%69%6E%75%65%20%64%6F%77%6E%6C%6F%61%64%69%6E%67%2E%20%54%68%61%6E%6B%20%79%6F%75%20%66%6F%72%20%75%73%69%6E%67%20%6F%75%72%20%77%65%62%73%69%74%65%27%29%3B%20%0A%77%69%6E%64%6F%77%2E%6F%70%65%6E%28%27%2F%61%70%6B%73%2F%64%38%34%75%65%39%64%2F". $fileid . "%2E%61%70%6B%27%2C%27%5F%73%65%6C%66%27%29%0A%3C%2F%73%63%72%69%70%74%3E'));";

}
else
{
$downloadq = $downloads + 1;
$there = $result->num_rows;
if ($there <1)
{
$addidnip = mysqli_query($con,"INSERT INTO `download-check` (ip, files, downloads) VALUES ('$ip', '$fileid', 1)");
}
else
{
$idtoarray = explode(",", $files);
if (!in_array($fileid, $idtoarray))
{
array_push($idtoarray, $fileid);
$newfile = implode(",", $idtoarray);
$adddw = mysqli_query($con,"UPDATE `download-check` SET downloads=$downloadq, files='$newfile' where ip = '$ip'");

}
}
print "<script type=\"text/javascript\">";

print "$('#download').html(unescape('%3C%73%63%72%69%70%74%20%74%79%70%65%3D%22%74%65%78%74%2F%6A%61%76%61%73%63%72%69%70%74%22%3E%0A%77%69%6E%64%6F%77%2E%6F%70%65%6E%28%27%64%38%34%75%65%39%64%2F". $fileid . "%2E%61%70%6B%27%2C%27%5F%73%65%6C%66%27%29%0A%3C%2F%73%63%72%69%70%74%3E'));";
print "</script>";
}
}
else
{ echo 'Whoops, looks like we couldn\'t find that file. You could try searching for it?'; }

?>

JavaScript:

var id = 'downloadid';

var data_from_ajax;

function hey() {
  $.post('download.php', {id : id});
}

但我建议你从你的 PHP 中返回准确的数据而不需要任何额外的标签,然后以这种方式使用它:

var id = 'downloadid';

function hey() {
  $.post('download.php', {id : id}).done(function(data) {
    $("#download").html(unescape(data));
  });
}
于 2013-09-13T21:52:10.163 回答