2011-01-15 5 views
0

I get 'json ist null' als Fehlerjson null Fehler Hilfe in PHP

Meine PHP-Datei:

<?php 


    if (isset($_REQUEST['query'])) { 
    $query = $_REQUEST['query']; 
    $url='https://www.googleapis.com/urlshortener/v1/'; 
$key='ApiKey'; 
$result= $url.($query).$key; 
$ch = curl_init($result); 
curl_setopt($ch, CURLOPT_HEADER, 0); 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,1); 
$resp = curl_exec($ch); 
curl_close($ch); 
echo $resp; 
    } 
?> 

Mein html:

<html> 
<head> 
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script> 
<script type="text/javascript"> 
$(document).ready(function(){ 
    // when the user clicks the button 
    $("button").click(function(){ 

      $.getJSON("shortner.php?query="+$('#query').attr("value"),function(json){ 

      $('#results').append('<p>Id : ' + json.id+ '</p>'); 
      $('#results').append('<p>Longurl: ' + json.longurl+ '</p>'); 



}); 


    }); 
}); 


</script> 

</head> 
<body> 

<input type="text" value="Enter a place" id="query" /><button>Get Coordinates</button> 
<div id="results"></div> 

Editiert:

<?php 


    if (isset($_REQUEST['query'])) { 
    $query = $_REQUEST['query']; 
    $url='https://www.googleapis.com/urlshortener/v1/'; 
$key='Api'; 
$key2='?key='; 

$result= $url.$query.$key2.$key; 
$requestData= json_encode($result); 
echo var_dump($query); 
$ch = curl_init($requestData); 
curl_setopt($ch, CURLOPT_HEADER, 0); 
curl_setopt($ch, CURLOPT_POST, 1); 

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,1); 
$resp = curl_exec($ch); 
curl_close($ch); 
echo $resp; 
    } 
?> 
+0

Wie sieht echo var_dump ($ query) aus? – James

+0

Es gab dies: string (70) "http://stackoverflow.com/questions/4698411/json-null-error-help-in-php" Ich gab Eingabe-URL dieser Seite. – simplyblue

+0

Laut der Google-Dokumentation soll der URL-Teil in einem JSON-formatierten Post-Body enthalten sein (d. H. Json_encode auf dem Server oder etwas ähnliches verwenden), wenn ich mich nicht irre. – PleaseStand

Antwort

2

Arbeitete für mich:

<?php 
    $ch = curl_init("https://www.googleapis.com/urlshortener/v1/url?key=MYAPIKEY&shortUrl=http://goo.gl/fbsS"); 

    curl_setopt($ch, CURLOPT_HTTPGET, 1); 
    curl_setopt($ch, CURLOPT_HEADER, 0); 
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); 

    $res = curl_exec($ch); 

    if (!$res) 
    var_dump(curl_error($ch)); else 
    echo "Yay! I've got JSON result!"; 

    curl_close($ch); 
    ?> 

Immer noch gibt es bit.ly Service mit ähnlichen, aber leistungsfähigere Funktionen. Hier ist das Beispiel dafür, wie es zu benutzen (funktioniert nur perfekt):

<?php 
if (array_key_exists("url", $_GET) && $_GET["url"] != "") 
{ 
    $u_name = "YOUR BIT.LY USERNAME"; 
    $u_apikey = "YOUR BIT.LY API KEY"; 

    $f = fopen("http://api.bit.ly/v3/shorten?login=" . $u_name . "&apiKey=" . $u_apikey . "&longUrl=" . rawurlencode($_GET["url"]) . "&format=json", "r"); 

    header("Content-Type: application/json"); 

    ob_start(); 

    echo stream_get_contents($f); 

    fclose($f); 

    ob_end_flush(); 

    exit; 
} 
?> 

<html> 
<head> 
    <title>jCarousel Examples</title> 
    <script type="text/javascript" src="jquery.js"></script> 
    <script type="text/javascript"> 
    $(document).ready(function() { 
    $("[name=send]").click(function() { 
    $.getJSON("index.php?url=" + $('[name=url]').val(), function(f) { 
     $('[name=res]').append('<p>Shorten: ' + f.data.url + '</p><br/ >'); 
    }); 
    }); 
    }); 
    </script> 
</head> 

<body> 
    <input type="text" name="url" size="30" /> 
    <input type="button" name="send" value="shorten!" /> 
    <br /><div name="res"></div> 
</body> 
</html> 

UPD: Um Ihren bit.ly API Key zu erhalten, registrieren Sie sich auf der Website bit.ly und gehen Sie zu Ihrem Konto (oben) -> Einstellungen.

+0

Danke für die Hilfe :) – simplyblue

+0

Danke für interessante Frage! =) – shybovycha

+0

Hier übergeben Sie einen Parameter wie folgt: $ .getJSON ("index.php? Url =" + $ ('[Name = URL]'). Val(), Funktion (f) Wie zwei Parameter übergeben, so dass Wir können beide Parameter in php lesen und mit ihnen arbeiten. Ich würde gerne zwei Parameter an PHP übergeben wie a und b, die ich die Eingabe von Benutzer – simplyblue