javascript:如何在ajax callback函数中将值返回给上层callback函数

2017-09-07 09:00 出处:360java.com 作者:360java  阅读()
先看代码: content = content.replace(/lt;img [^gt;]*src=[#39;quot;]([^#39;quot;])[^gt;]*gt;/gi, function (match, capture) { $.

先看代码:

content = content.replace(/<img [^>]*src=['"]([^'"]+)[^>]*>/gi,
    function (match, capture) {
        $.ajax({
            data: { imgSrc: capture },
            dataType: 'jsonp',
            success: function (data) {
                //如何将data值返回给function (match, capture)
            }
        });
});

需求是:在ajax的回调函数中将ajax请求的返回值传递给上层函数(也就是replace的回调函数)。

简面言之:function (match, capture) 要返回 success: function (data) 中的 data 值。

< >
最佳答案

哈哈 官方的解释是这样

Cross-domain requests and dataType: "jsonp" requests do not support synchronous operation.

所以当因为跨域使用了JSONP的时候,即使设置成同步也是不行的。

可以这样接收返回值

content = content.replace(/<img [^>]*src=['"]([^'"]+)[^>]*>/gi,
    function (match, capture) {
        $.ajax({
            data: { imgSrc: capture },
            dataType: 'jsonp',
            success: function (data) {
                //如何将data值返回给function (match, capture)
     success_function(data);
} }); });

function success_function(info)
{

  //处理接收到的数据
}

看来只有用这个方法了,我用这个方法实现试试

实现代码:

var imgSrcRegex = /<img [^>]*src=['"]([^'"]+)[^>]*>/gi;
var match;
while ((match = imgSrcRegex.exec(content)) !== null) {
    var originImgSrc = match[1];
    $.ajax({
        data: { imgSrc: originImgSrc },
        dataType: 'jsonp',
        success: function (data) {
            replaceImgSrc(content, originImgSrc, data);
        }
    });
}

function replaceImgSrc(content, originImgSrc, newImgSrc) {
    content = content.replace(originImgSrc, newImgSrc);
}
分享到:
本文标签: c

相关文章

发表评论(共条评论)愿您的每句评论,都能给大家的生活添色彩,带来共鸣,带来思索,带来快乐。

Copyright (C) java学习 360java 360java.com, All Rights Reserved.

苏ICP备16022210号