2014-05-20 50 views
1

我使用JQuery.ajaxPHP脚本发送一个JavaScript对象,每个POSTJQuery将其发送的方式,使得它很容易从PHP accessable:从PHP访问POST字符串

的JavaScript:

var request = $.ajax({ 
    url: server, 
    dataType: 'text', 
    timeout: timeout, 
    type: 'POST', 
    data: {key:"value"} 
}); 

PHP:

$_POST["key"] 

当我发送一个简单的字符串$就不是JS的对象,我如何在PHP中访问它?例如。当简单地发送“数据”,count($_POST)返回0

var request = $.ajax({ 
    url: server, 
    dataType: 'text', 
    timeout: timeout, 
    type: 'POST', 
    contentType: "text/plain", 
    data: "data" 
}); 

我一定要使用file_get_contents('php://input')或有另一种方式?

+4

访问它,为什么你不能发送邮件使用对象的字符串? – Rustam

+2

'当简单地发送“数据”'你的意思是发送空的数据?如果是的话,显然'count($ _ POST)'将返回0 – asprin

回答

0

当我使用$ .ajax而不是JS对象发送一个简单的字符串时,如何在PHP中访问它?

我一定要使用file_get_contents('php://input')

是。如果您不以PHP可以自动解码的格式对数据进行编码,那么您必须像这样访问原始数据。

请记住,当您这样做时,请将请求设置为content-typetext/plain

+0

我不同意,通过任何方法发送给PHP的有效数据可以通过$ _POST(或$ _GET取决于方法)访问。 php://输入允许您访问以原始格式发送的所有数据。 – PeteAUK

+0

@PeteAUK - 什么?废话。当使用HTML 4表单支持的两种内容类型之一发送数据时,仅会填充“$ _POST”。 – Quentin

+0

@PeteAUK你知道如何访问$ _POST变量中的单个字符串吗? – telandor

-1

你的数据应该是有效的,一个字符串本身是无效的。请尝试:

var request = $.ajax({ 
    url: server, 
    dataType: 'text', 
    timeout: timeout, 
    type: 'POST', 
    contentType: "text/plain", 
    data: {data: "mysimplestring"} 

});

$_POST['data']; 
+0

'“data”'是完全有效的'text/plain'数据。这个例子*不会工作,因为PHP会看到数据被标记为“text/plain”,并且不会将其解析为“$ _POST”。 – Quentin