jquery $ .post没有返回参数就没有成功

时间:2015-10-13 13:22:29

标签: jquery

真的很奇怪。我调用服务器从数据库中删除一个值。无论如何,它按预期工作,但如果我不发送任何数据,该功能不会发出警报。

如果我做回声(例如在php中),这是有效的,否则它不会:

     $.post('api/finder/user.php', { search_id: $(btnobj).prop('id') }, function(data) {
                    alert(data);
                }, "json");

我不想回复任何事情。只需在服务器端运行脚本即可。将函数(数据)保留为函数()。

修改

使用.fail(),它会在内部发出警报,而不是警告(1)。

  $.post('api/finder/user.php', { search_id: $(btnobj).prop('id') },  function() {                      
                    alert(1);

                })
                .fail(function(jqXHR, textStatus, errorThrown) {
                    alert(jqXHR.responseText);
                });

3 个答案:

答案 0 :(得分:1)

PHP脚本中echo的任何内容都是返回给JavaScript的值。你应该让你的PHP脚本打印/返回一些东西,即使它只是:

echo json_encode(true);

如果这是JavaScript所期望的那样,那么PHP提供有效的JSON响应非常重要!

代码示例(使用done()fail()):

$.post('api/finder/user.php', { search_id: $(btnobj).prop('id') })
    .done(function() {                      
        alert(1);
    })
    .fail(function(jqXHR, textStatus, errorThrown) {
        alert(jqXHR.responseText);
    });

检查服务器错误:

如果代码继续在fail()内执行代码,则需要检查服务器为AJAX请求提供的响应。

您可以使用Chrome中“开发人员工具”的“网络”标签查看请求(AJAX POST请求)以及运行代码时的响应。检查响应的“状态” - 它应该是200代码(表示成功)。

答案 1 :(得分:0)

如果您请求json并且不返回任何内容,则没有要解析的json,因此会触发解析错误,如果添加了错误处理程序,则会看到该错误。

json parse错误意味着您的成功回调不会触发,您将看不到警报。如果您不希望返回json,请不要请求json。

删除dataType参数,无论是否返回数据,都应该看到警报。为什么你不想返回数据然而不寻常

答案 2 :(得分:0)

很确定这就是你要找的东西?

$.post('api/finder/user.php', { search_id: $(btnobj).prop('id') });

如果我误解了你并且你实际上正在寻找一种从函数(数据)中返回数据的方法(一个常见的问题),那么就这样做

function removeUser() {
    return $.post('api/finder/user.php', {
        search_id: $(btnobj).prop('id')
    }, null, "json");
};

然后使用:(即使你不回应任何东西也会打电话)

removeUser().done(function(data) {
    //parse 'data' response
}