jQuery ajax 返回值

IT技术 javascript jquery variables
2021-03-02 14:02:51

如何从 jquery ajax返回值“ pinNumber ”,以便我可以将它附加到 ajax 之外。这是我的代码

var x = pinLast + 1;
    for(i=x;i<=pinMany;i++) {
        var i = x++;
        var cardNumber = i.toPrecision(8).split('.').reverse().join('');
        var pinNumber = '';

        jQuery.ajax({
            类型:“POST”,
            网址:“data.php”,
            数据:“request_type=generator”,
            异步:假,
            成功:功能(味精){
                var pinNumber = msg;
                返回 pinNumber;
                //引脚号应该返回
            }
        });

        jQuery('.pin_generated_table').append(cardNumber+' = '+pinNumber+' 
'); // 变量 pinNumber 应该可以到这里 }

不明白的请追问..^^谢谢

6个回答

默认情况下,AJAX 是异步的,您不能在不进行同步调用的情况下从回调中返回值,而您几乎肯定不想这样做。

您应该为success:处理程序提供一个真正的回调函数,并将您的程序逻辑放在那里。

我真的不认为在 SYNC AJAX 中需要回调。
2021-04-23 14:02:51
同步 Ajax 是矛盾的。并且同步 XHR 很糟糕。
2021-05-04 14:02:51
哦非常感谢..我已经有了这个想法.. :) 通过将我的变量放在 ajax 里面然后将它附加到里面。
2021-05-15 14:02:51
var pinNumber = $.ajax({
    type: "POST",
    url: "data.php",
    data: "request_type=generator",
    async: false
}).responseText;
jQuery('.pin_generated_table').append(cardNumber+' = '+pinNumber+' ');
请不要使用这个,谁会读这个!!!这是错误的!我们的程序员现在认为 ajax 是这样工作的!
2021-05-07 14:02:51

它与变量范围有关pinNumber您创建的局部变量在其包装函数之外不可访问。

也许pinNumber全局声明,或者如果它可以奏效,只需将.append()您的成功函数放在内部即可

OP 不需要pinNumber全局声明,只要var在成功处理程序内的赋值中不使用关键字就足够了然后分配将影响封闭范围。
2021-04-21 14:02:51
async是假的,意思是.append在 AJAX 调用之后运行。
2021-05-11 14:02:51
它与变量作用域无关;.append成功回调之前执行。
2021-05-19 14:02:51
var _successEvent = function(response){
    $('.pin_generated_table').append(cardNumber + ' = ' + response);
};

$.ajax({
    type: "POST",
    url: "data.php",
    data: "request_type=generator"
}).done(_successEvent);

你可以使用这个例子:

window.variable = 'some data';

这使您成为全局变量,您可以从任何地方访问它

但是实现者什么时候知道设置的值何时window.variable更改并可使用新值访问?
2021-05-06 14:02:51