【问题标题】:Ajax jquery not calling success even after successfully executing即使成功执行,Ajax jquery 也不会调用成功
【发布时间】:2016-06-20 11:39:59
【问题描述】:

我需要使用 AJAX 传递 json 变量。这是我的 ajax 函数:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
<script>

function emailchkforfrntend()
{
var key='7bc443a2a363b050bc94963baff4b2ac';
var email_id=$("#email_id").val();// email_id->input field id

$.ajax({

    url: "targetURL/example.php",
    type : "post",
    dataType: "jsonp",
    data : { "email_id": email_id, "key": key},
    success: function(result){
        alert('success');
    },
    error: function(XMLHttpRequest, textStatus, errorThrown){
        alert('error '+errorThrown);
        alert('status '+textStatus);
        alert('response text '+XMLHttpRequest.responseText);
    },
    complete : function(){
        alert('in complete');
    }

})
.done(function(msg) {
    alert('Inside done....'+msg);
if(msg!=0)
{
var obj = jQuery.parseJSON(msg);

//var p_fname=obj.p_fname; 

$("#Result_Div").html("<b style='color:blue;'>already existing Member <i class='fa fa-thumbs-o-up'></i></b>");

}
else
{

    $("#Result_Div").html("<b style='color:green;'>New Member <i class='fa fa-thumbs-o-up'></i></b>");

}
});
}

HTML 代码:

<input type="text" id='email_id' onkeyup="emailchkforfrntend();">

调用此函数后,每次调用错误函数且控件未调用.done(function(msg){})。此外,我在错误功能的第一次警报中收到Jquery1112016992787341587245_1466413029814 was not called。我将一个虚拟 PHP 脚本传递给 URL,它将记录插入数据库,以检查它是否调用 URL,对该 PHP 的调用正在工作,但它仍在调用错误函数而不是调用成功函数。

我有什么遗漏的吗?为了使用此功能应该做什么?

【问题讨论】:

  • 那么你的 php 代码可能有错误!
  • 您不能将POST 方法与jsonp 一起使用,因为它的性质:stackoverflow.com/a/4508215/1414562
  • @AminJafari PHP 代码运行良好。即使在调用 javascript 之后,PHP 代码值也会被插入到 DB 中。
  • @A.Wolff 我也尝试过使用 GET 方法,但情况还是一样。
  • 是的,但可能在那之后它会抛出错误,如果你也发布你的 php 代码,对问题发表评论会容易得多

标签: javascript php jquery json ajax


【解决方案1】:

试图帮助...您说您需要使用ajaxJSON 变量发送到PHP。我注意到您使用的是JSONPJSONP真的有必要吗?

我写了一个有效的HTML/JS 代码。代码只是使用AJAX 发送数据并执行回调。我想知道在您的情况下,JSONP 是否不会影响完整的回调。

结果:

Tue Jun 21 2016 15:39:54 GMT-0300 (BRT) Req sent {"email_id":"1","key":"abc"}
Tue Jun 21 2016 15:39:54 GMT-0300 (BRT) Success
Tue Jun 21 2016 15:39:54 GMT-0300 (BRT) Complete {"readyState":4,"responseText":"\n\t\n\t\t\n\t\t\n\t\n\t\n\t\tResult:\n\t\t
\n\t\n","status":200,"statusText":"OK"}

代码:

<html>
    <head>
        <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
        <script>
            function log(msg) {
                var dateMsg = (new Date()) + ' ' + msg;
                var $res = $('#result');
                var $o = $('<li>').html(dateMsg);
                $res.append($o);
            }

            function checkEmailFrontEnd(email_id, key) {
                var userdata = {
                    email_id: email_id,
                    key: key
                };
                var opts = {
                    url: 'html.html',
                    type: 'POST',
                    data: userdata,
                    success: function(data, textStatus, jqXHR){
                        log('Success');
                    },
                    error: function(jqXHR, textStatus, error){
                        log('Error ' + error);
                    },
                    complete: function(jqXHR, textStatus){
                        log('Complete ' + JSON.stringify(jqXHR));
                    }
                };
                $.ajax(opts);   
                log('Req sent ' + JSON.stringify(userdata));
            }
            $(function(){
                checkEmailFrontEnd('1', 'abc');
            });
        </script>
    </head>
    <body>
        Result:
        <ul id='result'></ul>
    </body>
</html>

【讨论】:

  • 问题解决了。 PHP 文件有问题。感谢您的帮助@Valdek Junior
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-20
  • 1970-01-01
  • 1970-01-01
  • 2023-03-15
相关资源
最近更新 更多