谷歌关闭,响应总是空的

时间:2014-05-29 21:21:33

标签: php google-closure-compiler google-closure-library

我试图聚集一个如何使用Google Closure来缩小JS的基本示例。我似乎无法让这一切发挥作用。

我试图效仿这些例子:

https://developers.google.com/closure/compiler/docs/gettingstarted_api http://closure-compiler.appspot.com/home

在处理API和/或AJAX代码时,我尝试的第一件事就是使用高级休息客户端应用程序 - Chrome扩展程序正确设置变量和值。但是,每当我发送这些数据时,我都会得到一个空的响应(下图)。

尝试在我的PHP代码中插入相同的代码,无论我在$ postData变量中发送什么,我都会得到一个空(null)响应。

PHP代码:

$postData =
    http_build_query(
    [
        'output_info' => 'compiled_code', 
        'output_format' => 'text', 
        'compilation_level' => 'SIMPLE_OPTIMIZATIONS', 
        'js_code' => urlencode("function hello(name) {       // Greets the user       alert('Hello, ' + name);     }     hello('New user');")
    ]
);

$ret = $this->ci->curl->simple_post(
    $url,
    $postData,
    $options
);

var_dump($ret);
die();

响应:

  

string' ' (长度= 1)

我99%确信我错过了使用Closure API的东西,比如钥匙或其他东西,但我不知道如何继续。

Closure Issue

1 个答案:

答案 0 :(得分:1)

经过多次,多次尝试,我发现如果我使用rawurlencode()而不是urlencode(),它就可以了。这是最后的功能。

    // use google closure to get compiled JS
    $encoded = rawurlencode($js);

    $postData =
            'output_info=compiled_code&' . 
            'output_format=text&' .
            'compilation_level=WHITESPACE_ONLY&' .
            'js_code=' . $encoded
    ;
    $options = [];

    $call = curl_init();
    curl_setopt_array(
             $call, 
             array(
                 CURLOPT_URL => 'http://closure-compiler.appspot.com/compile',
                 CURLOPT_POST => 1,
                 CURLOPT_POSTFIELDS => $postData,
                 CURLOPT_RETURNTRANSFER => 1,
                 CURLOPT_HEADER => 0,
                 CURLOPT_FOLLOWLOCATION => 0
              )
    );
    $jscomp = curl_exec($call);

    return $jscomp;