2013-02-10 2 views
2

Я пытаюсь короткой Ссылку над API и получить результат с JSONURL Сокращенно с Javascript использования JSON

Некоторой информации о API

Образца ответ

{"error":0,"short":"http:\/\/doma.in\/sf0x6"} 

Sample Использование в PHP

[email protected]_get_contents("http://doma.in/api/?url=http://www.google.com&api=APIKEY"); 

$url=json_decode($content,TRUE);//Decodes json into an array 

if(!$url["error"]){ // If there is no error 
    echo $url["short"]; //Outputs the short url 
} 
else{ 
    echo $url["msg"]; //Outputs the error message 
} 

Запрос укоротить Long URL

GET http://doma.in/api/?url=http://www.google.com&api=APIKEY 

* json_short.php *

function curPageURL() { 
$pageURL = 'http'; 
if ($_SERVER["HTTPS"] == "on") {$pageURL .= "s";} 
$pageURL .= "://"; 
if ($_SERVER["SERVER_PORT"] != "80") { 
    $pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"]; 
} else { 
    $pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"]; 
} 
return $pageURL; 
} 

$url = curPageURL(); 

$json_short = @file_get_contents("http://doma.in/api/?url=$url&api=APIKEY"); 
echo $json_short; 

* json_short.js *

$.getJSON('json_short.php', function(data) { 
    if(!data.error){ // If there is no error 
     alert(data.short) //Outputs the short url 
    } 
    else{ 
     alert(data.msg) 
    } 
}); 
+1

CORS должно препятствовать вам. Вы должны использовать конечную точку JSONP вместо – Alexander

+0

Спасибо за ваш ответ, но я новичок в кодировании. Не могли бы вы рассказать мне, где я должен использовать JSONP? – user2036282

+1

Укорачивающий URL должен поддерживать JSONP. В противном случае вам нужно использовать PHP для него. В любом случае, лучше использовать PHP на стороне сервера для него, так как таким образом ваш ключ приложения не раскрывается открыто – Alexander

ответ

0

Использование JavaScript для упрощения процесса:

var foo = window.location.href; 
var bar = foo.replace(/[a-z0-9.]+\//g, shortener); 

function shortener(match, pos, fullstring) 
    { 
    if (shortener.count === foo.match(/[a-z0-9.]+\//g).length) 
    { 
    shortener.count = 0; 
    } 
    else 
    { 
    shortener.count = shortener.count + 1 || 0; 
    } 
    if (shortener.count === 1) 
    { 
    return ""; 
    } 

    else 
    { 
    return match; 
    } 
    } 
Смежные вопросы