我需要调用php并从另一台服务器获取数据,我使用proxy.php从ajax调用。
proxy.php
<?
header('Content-type: application/json');
$url=$_GET['url'];
$json=file_get_contents($url);
echo $json;
?>
我的代码看起来
function scanFunction(){
var url="http://address/scan.php?user=user1&video=video1";
console.log(url);
url = 'proxy.php?url='+url;
$.ajax({
url: url,
type: "POST",
data: {
},
dataType: "JSON",
success: function (jsonStr) {
if(jsonStr.length>0){
var obj = jsonStr;
console.log(obj);
}
else{
console.log(" error...");
}
}
});
}
当我使用一个参数传递给proxy.php时,这个代码工作正常,其中第二个参数缺失
那是
proxy.php print中的 echo $url;
http://address/scan.php?user=user1
事件我传递两个参数,比如
proxy.php?url="http://address/scan.php?user=user1&video=video1"
这是proxy.php中缺少的第二个参数视频,所以我没有得到预期的结果。
答案 0 :(得分:2)
GET
变量中的GET['url']
变量可能存在问题。
在将您的网址发送至proxy.php
时尝试对其进行编码,以避免此类问题。
var url = encodeURIComponent("http://address/scan.php?user=user1&video=video1");
url = 'proxy.php?url='+url;
然后在PHP端你需要解码它。
$url=$_GET['url'];
if (is_string($url)) {
$url = urldecode($url);
}
答案 1 :(得分:1)
使用ajax调用的data:
属性传递任意数量或多个参数
function scanFunction(){
$.ajax({
url: 'proxy.php',
type: 'POST',
data: {
url: 'http://address/scan.php',
user: 'user1',
video: 'video1'
},
dataType: "JSON",
success: function (jsonStr) {
if(jsonStr.length>0){
var obj = jsonStr;
console.log(obj);
} else {
console.log(" error...");
}
}
});
}
然后在php脚本中的那些参数中构建你想要的任何东西
哦,你在javascript中使用了
type: 'POST'
,所以你应该在PHP脚本中使用$_POST
数组。
proxy.php
<?php
$url = $_POST['url'] . '?user=' . $_POST['user'] . '&video=' . $_POST['video'];
$json=file_get_contents($url);
header('Content-type: application/json');
echo $json;
?>
答案 2 :(得分:1)
// getting all of the post data
$files = Input::file('images');
// Making counting of uploaded images
$file_count = count($files);
// start count how many uploaded
$uploadcount = 0;
foreach($files as $file) {
$rules = array('file' => 'required'); //'required|mimes:png,gif,jpeg,txt,pdf,doc'
$validator = Validator::make(array('file'=> $file), $rules);
if($validator->passes()){
$destinationPath = 'uploads';
$filename = $file->getClientOriginalName();
$upload_success = $file->move($destinationPath, $filename);
$uploadcount ++;
}
}
if($uploadcount == $file_count){
//uploaded successfully
}
else {
//error occurred
}
无法知道哪些参数适用于它,哪些参数适用于proxy.php
。例如,当你调用url:
scan.php
您的代理脚本认为查询参数为:
proxy.php?url=http://address/scan.php?user=user1&video=video1
但你的意图是将url:"http://address/scan.php?user=user1"
video:"video1"
之后的所有内容作为一个参数。更好的方法是使用url
参数而不是URL查询参数。
POST
现在,在 proxy.php :
$.ajax({
url: url,
type: "POST",
data: {
resource_url: "http://address/scan.php?user=user1&video=video1"
},
....
});