http请求里面的另一个http请求成功响应不能在jquery中工作

时间:2015-11-23 07:49:51

标签: jquery wordpress

为了修改wordpress插件发送短信通知我试图使用jquery.post()事件在另一个http请求的成功响应内做出http请求,但第二个http请求不起作用,它不返回任何回复,我的代码有什么问题?

//first http request

jQuery.post(redi_restaurant_reservation.ajaxurl, data, function (response) {
    jQuery('#redi-restaurant-step3').attr('disabled', false);
    jQuery('#step3load').hide();
    if (response['Error']) {
        jQuery('#step3errors').html(response['Error']).show('slow');
    } else {
        var smsurl = 'http://sms.mysitename.com/SendSms.aspx?uid=myuserId&pass=123&contact=phone&sms=smstext&rnd=randomnumber';
        alert(smsurl);
        //

        //2nd http request. problem arises from here............

        jQuery.post(smsurl, function (a) {

        alert('hello'); //not show any alert here

        if (a['Error']) { 
            alert('if');
            jQuery('#step3errors').html(a['Error']).show('slow');
        } else {

            alert('successfully sent');
        } 
         }, 'json');

        ga_event('Reservation confirmed', '');
        jQuery('#step1').hide('slow');
        jQuery('#step2').hide('slow');
        jQuery('#step3').hide('slow');
        jQuery('#step4').show('slow'); //success message
        jQuery('html, body').animate({scrollTop: 0}, 'slow');
    }
}, 'json');

2 个答案:

答案 0 :(得分:0)

在我的情况下,所有麻烦属于这一行 -

 var smsurl = 'http://sms.mysitename.com/SendSms.aspx?uid=myuserId&pass=123&contact=phone&sms=smstext&rnd=randomnumber';

jQuery.post()事件无法直接使用此url,

所以我修改了我的代码,就像下面一样,它就像魅力一样!

                var msg = encodeURIComponent("Your reservation is confirmed! Thank you for your reservation");
                var smsurl = "http://sms.mysitename.com/SendSms.aspx?uid=myuserId&pass=123&contact="+userPhone+"&sms="+msg+"&rnd=123";
                var data = {url: smsurl};

                jQuery.post('http://localhost/booking/wp-admin/sendsms.php', data, function (response) {

                    if (response['Error']) {
                    jQuery('#step3errors').html(response['Error']).show('slow');
                    } else {
                        ga_event('Reservation confirmed', '');
                        jQuery('#step1').hide('slow');
                        jQuery('#step2').hide('slow');
                        jQuery('#step3').hide('slow');
                        jQuery('#step4').show('slow'); //success message
                        jQuery('html, body').animate({scrollTop: 0}, 'slow');
                    }

                });

我的sendsms.php执行CURL请求并返回我想要的响应..

<?php
$ch = curl_init();
$the_url = $_POST['url'];
curl_setopt($ch, CURLOPT_URL, $the_url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_REFERER, $_SERVER['REQUEST_URI']);
$result = curl_exec($ch);
curl_close($ch);
echo $result; //die();
?>

希望这有助于另一个人。 :)

答案 1 :(得分:0)

您的代码没有错,exept POST仅适用于同一个域