2016-07-12 3 views
1

Ich muss php aufrufen und Daten von einem anderen Server und ich benutze Proxy.php von ajax aufrufen.PHP kann nicht übergeben zwei Parameter zu einem anderen php mit Ajax

proxy.php

<? 
header('Content-type: application/json'); 
$url=$_GET['url']; 
$json=file_get_contents($url); 
echo $json; 
?> 

Und mein Code sieht

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..."); 
      } 

     } 

    }); 

} 

Und dieser Code funktioniert gut, wenn ich vorbei einen Parameter an die URL verwenden, um proxy.php wo als zweites Argument fehlt

Das ist

echo $url; innen proxy.php Druck http://address/scan.php?user=user1

Ereignis gibt ich zwei Argumente wie, proxy.php?url="http://address/scan.php?user=user1&video=video1"

Die zweite Argument Video innerhalb proxy.php fehlt und so bin ich nicht erwartetes Ergebnis bekommen.

+1

Was denken Sie, die 'Daten:' Eigenschaft eines '.ajax' Anruf könnte für – RiggsFolly

+0

Schnell Erklärung verwendet werden: sobald Sie die erste haben' & 'in mail-Scan-URL, wird es als ein zweiter Parameter auf dem 'Get' gesehen werden. Sie müssen einen Weg finden, um es zu verschlüsseln und dann stellen Sie es als "Proxy.php? Url = '+ encoded_url" – FirstOne

Antwort

2

Möglicherweise haben Sie Probleme mit Ihren GET Variablen in der GET['url'] Variable.

Versuchen Sie, Ihre URL zu codieren, wenn Sie sie an proxy.php senden, um solche Probleme zu vermeiden.

Dann auf der PHP-Seite müssen Sie es entschlüsseln.

$url=$_GET['url']; 
if (is_string($url)) { 
    $url = urldecode($url); 
} 
1

Verwenden Sie die data: Eigenschaft des Ajax-Aufruf so viel oder so viele Parameter zu übergeben, wie Sie

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..."); 
      } 
     } 
    }); 
} 

Dann mögen bauen, was Sie von diesen Parametern wollen im PHP-Skript

Oh, und Sie verwendeten type: 'POST' in Ihrem Javascript, so sollten Sie das Array $_POST in Ihrem PHP-Skript verwenden.

proxy.php

<?php 

$url = $_POST['url'] . '?user=' . $_POST['user'] . '&video=' . $_POST['video']; 

$json=file_get_contents($url); 

header('Content-type: application/json'); 
echo $json; 
?> 
+0

Eigentlich brauche ich generalisierte Proxy.php zu verwenden, ich muss es von vielen Orten mit anderen Parametern aufrufen . – CodeDezk

1

proxy.php kann nicht wissen, welche Argumente für sie gemeint sind, und die für scan.php gemeint sind. ZB Wenn Sie URL-Aufruf: denkt

proxy.php?url=http://address/scan.php?user=user1&video=video1 

Ihre Proxy-Skripte, dass die Abfrageparameter sind:

url:"http://address/scan.php?user=user1" 
video:"video1" 

Aber Ihre Absicht für alles war nach url ein Parameter zu sein. Ein besserer Ansatz ist die Verwendung von POST Parametern anstelle von URL-Abfrageparametern.

$.ajax({ 
    url: url, 
    type: "POST", 
    data: { 
     resource_url: "http://address/scan.php?user=user1&video=video1" 
    }, 
    .... 
}); 

Jetzt in Proxy.php:

<?php 
    header('Content-type: application/json'); 
    $url=$_POST['resource_url']; 
    $json=file_get_contents($url); 
    echo $json; 
?> 
Verwandte Themen