通过代理传递url属性

时间:2010-11-24 18:04:13

标签: php ajax proxy

我正在运行代理,因此我可以通过url参数对数据执行ajax请求。代理php看起来像:

<?php
header('Content-type: application/xml');
$daurl = 'http://thesite.com/form.asp';
$handle = fopen($daurl, "r");
if ($handle) {
    while (!feof($handle)) {
        $buffer = fgets($handle, 4096);
        echo $buffer;
    }
    fclose($handle);
}
?>

我用ajax命令代理,最后添加一个参数,如:

$j.ajax({
            type: 'GET',
            url: 'sandbox/proxy.php',
            data: 'order=' + ordervalue,
            dataType: 'html',
            success: function(response) {
            $j("#result").html(response);
            }
        });

所以请求就像sandbox / proxy.php?order = 123

如何获取该数据(order = 123)并将其附加到$ daurl变量(http://thesite.com/form.asp?order=123),以便我可以让代理实际返回一些内容?

这对我来说是处女地,所以你不能过度解释=)

2 个答案:

答案 0 :(得分:2)

简单。

$daurl = 'http://thesite.com/form.asp';

//if you only want 'order':
if(isset($_GET['order'])) 
   $daurl .= '?order=' . $_GET['order'];

//if you want the entire query string:

if(strlen($_SERVER['QUERY_STRING']) > 0) 
   $daurl .= '?' . $_SERVER['QUERY_STRING'];
...

答案 1 :(得分:0)

$_SERVER['QUERY_STRING']应包含order = 123,因此您可以按如下方式更改$ daurl:

$daurl = 'http://thesite.com/form.asp';
if($_SERVER['QUERY_STRING'] != ""){
    $daurl.='?'.$_SERVER['QUERY_STRING'];
}

这样做会传输查询字符串上传递的所有内容。但是,如果您只想要订单部分,可以使用$ _GET ['order'],您可能需要执行以下操作:

$order = isset($_GET['order']) ? $_GET['order'] : -1;
如果订单未在查询字符串中传递,则

$order将为-1,否则将具有该值。