Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.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
Php 这是jQuery错误吗?$。post vs.ajax_Php_Javascript_Jquery - Fatal编程技术网

Php 这是jQuery错误吗?$。post vs.ajax

Php 这是jQuery错误吗?$。post vs.ajax,php,javascript,jquery,Php,Javascript,Jquery,更新:我的代码可能会令人困惑并包含错误。但是这里是我试图用$.ajax和$.post做的 ----我想将JSON发送到php并接收纯文本。但是$\u POST是空的您不正确地使用了$.ajax()。$.ajax的数据参数包装在字符串中。试试这个: $.ajax({ type: "POST", url: "Ajax_example.php", data: {field: $("#field").val() }, success: function(msg){

更新:我的代码可能会令人困惑并包含错误。但是这里是我试图用$.ajax和$.post做的 ----我想将JSON发送到php并接收纯文本。但是$\u POST是空的您不正确地使用了
$.ajax()
$.ajax
数据
参数包装在字符串中。试试这个:

$.ajax({
    type: "POST",
    url: "Ajax_example.php",
    data: {field: $("#field").val() },
    success: function(msg){
        alert("NEW DATA:"+msg);
    }
});
您使用的
$.ajax()
不正确。
$.ajax
数据
参数包装在字符串中。试试这个:

$.ajax({
    type: "POST",
    url: "Ajax_example.php",
    data: {field: $("#field").val() },
    success: function(msg){
        alert("NEW DATA:"+msg);
    }
});

在您说不起作用的部分中,您将花费大量时间为数据生成字符串,但在您说起作用的部分中,您将传递一个对象文本(首选)。修复$.ajax部分,将对象文本作为
数据
选项传递

您还传递了
contentType
选项,但没有
dataType
选项。使用以下代码块中的任一版本:

$( function()
{
    $( '#submit' ).click( function( e )
    {
        /**
          THIS
         */
        $.ajax( {
            type: 'POST',
            url: 'Ajax_example.php',
            data: {
                field: $( '#field' ).val()
            }
            success: function( msg )
            {
                alert( 'NEW DATA:' + msg );
            },
            dataType: 'json'
        } );

        /**
          IS THE SAME AS THIS
         */
        $.post( // type implied in method name
            // url
            'Ajax_example.php',
            // data
            {
                field: $( '#field' ).val()
            },
            // success
            function( msg )
            {
                alert( 'NEW DATA:' + msg );
            },
            // dataType
            'json'
        );

        /**
          DON'T RETURN FALSE...CONTROL YOUR EVENT INSTEAD
         */
        e.preventDefault();
    } );
} );

在您说不起作用的部分中,您将花费大量时间为数据生成字符串,但在您说起作用的部分中,您将传递一个对象文本(首选)。修复$.ajax部分,将对象文本作为
数据
选项传递

您还传递了
contentType
选项,但没有
dataType
选项。使用以下代码块中的任一版本:

$( function()
{
    $( '#submit' ).click( function( e )
    {
        /**
          THIS
         */
        $.ajax( {
            type: 'POST',
            url: 'Ajax_example.php',
            data: {
                field: $( '#field' ).val()
            }
            success: function( msg )
            {
                alert( 'NEW DATA:' + msg );
            },
            dataType: 'json'
        } );

        /**
          IS THE SAME AS THIS
         */
        $.post( // type implied in method name
            // url
            'Ajax_example.php',
            // data
            {
                field: $( '#field' ).val()
            },
            // success
            function( msg )
            {
                alert( 'NEW DATA:' + msg );
            },
            // dataType
            'json'
        );

        /**
          DON'T RETURN FALSE...CONTROL YOUR EVENT INSTEAD
         */
        e.preventDefault();
    } );
} );

您的数据是$receive变量,而不是$u POST。尝试:

<?php
    $receive=file_get_contents('php://input');
    $receive=json_decode($receive, TRUE);
    echo $receive['field'];
?>

您的数据是$receive变量,而不是$u POST。尝试:

<?php
    $receive=file_get_contents('php://input');
    $receive=json_decode($receive, TRUE);
    echo $receive['field'];
?>



我认为您还需要设置$.post的内容类型。根据下面的评论,这是一个非常令人困惑的问题……我认为没有人知道您真正想要什么(尊敬的是,包括您……)我认为你也需要为$.post设置内容类型。根据下面的评论,这是一个非常令人困惑的问题…我认为没有人知道你真正想要什么(尊敬的包括你…),现在代码不正确,因为内容类型错误。OP只需使用json而不是常规形式的URLCoded来发出请求。@Bjord:我需要使用除contentType以外的内容类型:“application/json;charset=utf-8”?@William-不要使用
contentType
,使用
数据类型:“json”
(请参阅我的答案)@如果服务器使用正确的
内容类型
标题进行回复,则根本不需要指定
数据类型
。您几乎不需要指定
contentType
@Matt Ball---这些都是为了测试一个API,它“默认使用(jQuery/Zepto).ajax来发出RESTful JSON请求”(Backbone.js)……这就是为什么我认为应该使用contentType来强制JSON请求的原因。我不是真的在建表格。这有意义吗?现在代码不正确,因为内容类型错误。OP只需使用json而不是常规形式的URLCoded来发出请求。@Bjord:我需要使用除contentType以外的内容类型:“application/json;charset=utf-8”?@William-不要使用
contentType
,使用
数据类型:“json”
(请参阅我的答案)@如果服务器使用正确的
内容类型
标题进行回复,则根本不需要指定
数据类型
。您几乎不需要指定
contentType
@Matt Ball---这些都是为了测试一个API,它“默认使用(jQuery/Zepto).ajax来发出RESTful JSON请求”(Backbone.js)……这就是为什么我认为应该使用contentType来强制JSON请求的原因。我不是真的在建表格。这有意义吗?我正在测试接收数据的两个选项。我得到了工作所需的美元。但不是$u POSI am测试接收数据的两个选项。我得到了工作所需的美元。但不是$\u post如果您向
$.post()
提供了
数据类型
,则它是最后一个参数。另外,使用
返回false有什么错
而不是
event.preventDefault()
?@JAAulde——根据jQuery,数据类型是您期望从服务器返回的内容类型,在本例中为纯文本。所以你的代码不起作用。此外,正如我所说,要求是它必须是一个JSON请求。这就是为什么我使用contentType:“application/json;charset=utf-8”。谢谢但是还有其他想法吗?@Matt-你在param订单上说得很对。我正在编辑,将选项与
.ajax
对齐,并将参数与
.post
对齐,但移动了错误的选项。对于
返回false,我认为这是一个太广泛的操作,你应该特别控制你的事件。()@William,好吧,我想我被你的问题和你非常奇怪的PHP(代码混合了各种测试)弄糊涂了。你想把JSON发送到PHP,然后接收纯文本吗?传输的JSON应该包含在哪个字段中?或者您只是简单地将整个帖子正文作为一个JSON字符串?根据您所说的工作代码块,您似乎没有尝试发送JSON。(你知道JSON和JS中的对象文字语法之间的区别吗?)@JAAulde,我想将JSON发送到php并接收纯文本。我能够得到JSONphp://input. 但是$\u POST是空的。如果向
$.POST()
提供
数据类型
,则它是最后一个参数。另外,使用
返回false有什么错
而不是
event.preventDefault()
?@JAAulde——根据jQuery,数据类型是您期望从服务器返回的内容类型,在本例中为纯文本。所以你的代码不起作用。此外,正如我所说,要求是它必须是一个JSON请求。这就是为什么我使用contentType:“application/json;charset=utf-8”。谢谢但是还有其他想法吗?@Matt-你在param订单上说得很对。我正在编辑,将选项与
.ajax
对齐,并将参数与
.post
对齐,但移动了错误的选项。对于
返回false,我认为这是一个太广泛的操作,你应该特别控制你的事件。()@William,好吧,我想我被