我自己做了一个有趣的项目,包括从另一个网站(来自不同的域)获取HTML源代码并获取它的一些信息。
在我的第一步中,我只使用PHP完成了所有工作,但是现在我尝试使用jQuery使其更好,因此页面可以动态地工作。
问题是,当我的Ajax请求到达" file_get_contents" call(这是给我网址的html源代码的那个)。
JS部分:
$.ajax({
type: 'GET',
url: 'getImage.php',
data: {referencia: $("#referencia").val()},
success: function(data){
var div = document.getElementById("print");
alert(data);
div.innerHTML = "<img src="+""+"/>"; //Not finished
},
error: function() {
alert("Error");
}
});
服务器部分:
<?php
$ref = $_POST['referencia'];
if(isset($_GET['referencia'])){
$url = /*some external url concatened with the post data*/;
$data = file_get_contents($url);
echo $data;
}
?>
我可以提供的一些注意事项: - 将ajax的类型改为post会使其失败,即使你删除&#34; file_get_contents&#34;线。 - 我也尝试过这种请求而没有运气(这个问题在到达&#34; file_get_contents&#34;行时没有失败,但在执行该功能时,它并没有返回任何内容,但我有独立测试它没有请求,工作正常):
var req = new XMLHttpRequest();
req.open("POST", "getImage.php", true);
req.setRequestHeader("Content-type", "application/x-www-form-urlencoded")
req.onreadystatechange = function(){
if(req.readyState == 4 && req.status == 200){
var div = document.getElementById("print");
alert(req.responseText);
div.innerHTML = "<img src="+""+"/>";
}
}
req.send("referencia=" + encodeURIComponent($("#referencia").val()));
答案 0 :(得分:0)
我的解决方案为我工作了100% ajax-> server.php->创建temp.zip->返回头文件->删除temp.zip->下载文件
server.php
import Foundation
import Firebase
import FirebaseDatabase
class Rewards {
let ref: DatabaseReference!
// let countRef: DatabaseReference!
var rewardAmt: Int!
var rewardsLeft: Int!
var reward_class_name: String = ""
var reward_amt: String = ""
var reward_desc: String = ""
var rewardID: String = ""
var tickUpCount = 0
var tickDownCount = 0
init(text: String) {
ref = Database.database().reference().child("Fund").childByAutoId()
// countRef = Database.database().reference().child("Testing").childByAutoId()
}
init(snapshot: DataSnapshot)
{
ref = snapshot.ref
if let value = snapshot.value as? [String : Any] {
rewardAmt = value["reward_ticket_amount"] as! Int
reward_class_name = value["reward_ticket_amount_class_name"] as! String
reward_amt = value["reward_ticket_amount_txt"] as! String
reward_desc = value["reward_ticket_class_desc"] as! String
rewardsLeft = value["rewards_left"] as! Int
rewardID = snapshot.key
}
}
}
extension Rewards{
func countUp(){
tickUpCount += 1
ref.child("uppingTicket").setValue(tickUpCount)
}
}
XMLHttpRequest而不是AJAX调用
//...
//ToDo Endforeach
$zip->close();
/* SOLUTION 1 without saving */
header('Content-type: application/zip');
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Content-Description: File Transfer");
header("Access-Control-Allow-Origin: *");
header('Content-Disposition: attachment; filename="'.basename($zip_file).'"');
header("Content-Transfer-Encoding: binary");
header("Content-length: " . filesize($zip_file));
header("Pragma: public"); // required
header("Expires: 0");
ob_end_flush();
readfile($zip_file);//important this line
unlink($zip_file);
die();
#...
如果一切正常,您将可以通过浏览器下载文件,而无需将其保存在服务器端。设计用于WordPress。