繁体   English   中英

使用jquery ajax将数据发送到远程服务器

[英]send data to remote server with jquery ajax

我正在开发一个应用程序,它会生成一个javascript代码,在网站上显示一个小部件。 当通过窗体小部件表单提交数据时,它使用jQuery ajax函数将数据发布到服务器。

问题是,如果我将小部件放在不同主机上的网站上,我将使用一个永远不会被触发的成功回调。 我知道它是因为javascript阻止跨域ajax并且我应该使用jsonp,但我想知道为什么成功事件没有被触发,如果数据正常发送到服务器?

这是代码:

$.ajax({
  type: 'POST',
  url: report_url,
  data: $(form).serialize(),
  success: function() {
    alert("success called!");
  }
});

用jsonp做同样事情的最佳方法是什么? 我有点困惑,如果我应该用jsonp和如何,因为它需要定义一个jsonp回调参数。

感谢帮助

好吧,你可以尝试使用JSONP

现场演示: http //jsfiddle.net/5CUk2/

(请检查浏览器控制台)

$(function() {

    //Example using flickr API
    var diffDomainUrl = 'http://api.flickr.com/services/feeds/photos_public.gne?jsoncallback=mycallback&tags=monkey&tagmode=any&format=json';

    $('#jsonpbtn').on('click', function() {
        $.ajax({
            url: diffDomainUrl,
            dataType: 'jsonp',
            data: {},
            success: function (data, textStatus) {
                console.log(textStatus);
                console.log(data);
            },
            jsonpCallback: 'mycallback'
        });
    });

});

顺便说一句,您可以尝试其他可能的“方式”来制作cross-domain请求,看看这个,也许可以帮助:

http://usejquery.com/blog/jquery-cross-domain-ajax-guide

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM