我發佈JSON請求到遠程服務。一切都好,服務工作正常,它迴應我。但是我沒有從遠程服務返回的數據。如何通過.post從JQuery獲取遠程json服務的數據?爲什麼這個例子返回的數據 - ``空':爲什麼JQuery的.post沒有返回數據?
<SCRIPT>
$(function() {
$('#zzz').click(function() {
$('#lak').html('wait...');
$.post(
'http://127.0.0.1:3000/test',
"{\"ipaddr\":\"192.168.132.58\"}",
function(data) { alert(data); },
"json"
)
});
});
</SCRIPT>
但TCP嗅探器顯示我,服務返回一些數據:
HTTP/1.1 200 OK
Connection: Keep-Alive
Content-Type: application/json
X-Powered-By: Mojolicious (Perl)
Date: Thu, 02 Sep 2010 06:17:10 GMT
Content-Length: 37
Server: Mojolicious (Perl)
{"status":"OK","result":"successful"}
解決:
<SCRIPT>
$(function() {
$('#clickme').click(function() {
$.getJSON('http://domain.tld/test/?foo=bar&callback=?',
function(jsonp) {
$('#jsonp-example').html(jsonp.result);
});
});
});
</SCRIPT>
<div id="jsonp-example"><a id="clickme" href="javascript:void()">Click me</a></div>
Mojolicious JSONP服務的例子:
# /test/?foo=bar&callback=smth
get '/test' => sub {
my $self = shift;
my $foo = $self->param('foo') || '';
my $callback = $self->param('callback') || 'jsonp';
...
my $json = $self->render(
json => {
'status' => 'OK',
'result' => 'successful'
},
partial => 1);
$self->render(data => "$callback($json)", format => 'js');
} => 'test';
提及SOP +1。 – 2010-09-02 12:15:29