Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ajax jQuery.post()未触发成功处理程序方法_Ajax_Javascript_Jquery_Jsfiddle - Fatal编程技术网

Ajax jQuery.post()未触发成功处理程序方法

Ajax jQuery.post()未触发成功处理程序方法,ajax,javascript,jquery,jsfiddle,Ajax,Javascript,Jquery,Jsfiddle,情况: 我有一个简单的表单,将调用.post()-call(),而不是实际的提交 post的工作原理是,它将发布请求并接收200(OK)状态以及响应正文中的预期字符串(如FireBug的网络视图所示) 问题: 带有alert()的匿名函数永远不会执行。为什么呢 注意事项: 我插入了一个警报,以指示该方法何时触发 为方便起见,请在代码下方添加链接 代码: 这是我的表格: <form> <input type="submit" value="Submit" /&

情况:

  • 我有一个简单的表单,将调用
    .post()
    -call(),而不是实际的提交
  • post的工作原理是,它将发布请求并接收
    200(OK)
    状态以及响应正文中的预期字符串(如FireBug的网络视图所示)
问题:

  • 带有
    alert()
    的匿名函数永远不会执行。为什么呢
注意事项:

  • 我插入了一个警报,以指示该方法何时触发
  • 为方便起见,请在代码下方添加链接
代码:

这是我的表格:

<form>
    <input type="submit" value="Submit" />
</form>

这就是我所期望的工作:

$(document).ready(function () {
    $('form').submit(function (e) {
        e.preventDefault();
        $.post('/echo/html/', {
            html: "<span>jsFiddle test return msg</span>",
            delay: 1
        }, function (data, textStatus, jqXHR) { 
            $('form').append(data); 
            alert("done"); // <----- THIS NEVER FIRES
        }, 'json');
    });
});
$(文档).ready(函数(){
$('form')。提交(函数(e){
e、 预防默认值();
$.post('/echo/html/'{
html:“JSFIDLE测试返回消息”,
延误:1
},函数(数据,文本状态,jqXHR){
$('form')。追加(数据);

警告(“完成”);//您将错误的数据类型设置为json,服务器返回html类型数据。顺便说一句,您不需要指定它:

dataType类型:字符串服务器预期的数据类型。 默认值:智能猜测(xml、json、脚本、文本、html)

$(文档).ready(函数(){
$('form')。提交(函数(e){
e、 预防默认值();
$.post('/echo/html/'{
html:“JSFIDLE测试返回消息”,
延误:1
},函数(数据,文本状态,jqXHR){
$('form')。追加(数据);
警惕(“完成”);
});
});
});

您将错误的数据类型设置为json,服务器返回html类型的数据。顺便说一句,您不需要指定它:

dataType类型:字符串服务器预期的数据类型。 默认值:智能猜测(xml、json、脚本、文本、html)

$(文档).ready(函数(){
$('form')。提交(函数(e){
e、 预防默认值();
$.post('/echo/html/'{
html:“JSFIDLE测试返回消息”,
延误:1
},函数(数据,文本状态,jqXHR){
$('form')。追加(数据);
警惕(“完成”);
});
});
});

为什么要发送HTML而需要JSON?@adeneo这是一种误解,认为此参数将指定输入类型而不是预期的输出类型。为什么要发送HTML而需要JSON?@adeneo这是一种误解,认为此参数将指定输入类型而不是预期的输出类型。我喜欢删除了更多答案,因为它没有使我区分更改。并解释了错误是什么。请您在回答中添加您所做的,而不是下次在注释中添加您所做的。关于$的数据类型。post方法:“默认值:智能猜测(xml、json、脚本、文本、html)。”谢谢!这是一个非常有用的添加。我更喜欢删除的答案,因为它没有使我区分更改。并解释了错误是什么。请您在您的答案中添加您所做的,而不是下次在您的评论中添加您所做的。关于$的数据类型。post方法:“默认:智能猜测(xml、json、脚本、文本、html)。”谢谢!这是一个非常有用的补充。
$(document).ready(function () {
    $('form').submit(function (e) {
        e.preventDefault();
        $.post('/echo/html/', {
            html: "<span>jsFiddle test return msg</span>",
            delay: 1
        }, null, 'json').done(function (data, textStatus, jqXHR) {
            $('form').append(data);
            alert("done"); // <----- THIS NEVER FIRES
        });
    });
});
$(document).ready(function () {
    $('form').submit(function (e) {
        e.preventDefault();
        $.post('/echo/html/', {
            html: "<span>jsFiddle test return msg</span>",
            delay: 1,
            success: function (data, textStatus, jqXHR) {
                $('form').append(data); // <----- DATA IS UNDEFINED
                 alert("done");         // <----- THIS FIRES!
            }
        }, null, 'json');
    });
});
$(document).ready(function () {
    $('form').submit(function (e) {
        e.preventDefault();
        $.post('/echo/html/', {
            html: "<span>jsFiddle test return msg</span>",
            delay: 1
        }, function (data, textStatus, jqXHR) {
            $('form').append(data);
            alert("done");
        });
    });
});