Php 这是jQuery错误吗?$。post vs.ajax
更新:我的代码可能会令人困惑并包含错误。但是这里是我试图用$.ajax和$.post做的 ----我想将JSON发送到php并接收纯文本。但是$\u POST是空的您不正确地使用了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()
。$.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,好吧,我想我被