Php 表单数据json/ajax脚本不';无法在新服务器上工作(从windows到linux)

Php 表单数据json/ajax脚本不';无法在新服务器上工作(从windows到linux),php,ajax,json,Php,Ajax,Json,我正在将一个站点从Windows服务器移动到运行PHP5.2.15的Linux服务器 网站上有一个大型应用程序表单,它使用javascript、jquery和ajax验证/添加字段,使用json对输入数据进行编码/解码,使用PHP发送电子邮件 此表单在Windows帐户上运行良好。当我把它移到我们的Linux服务器上时,除了发送的电子邮件是空的以外,其他一切都正常工作。有一个PHP错误会随电子邮件一起打印和发送: 警告:为第4行/home/account/public\u html/applic

我正在将一个站点从Windows服务器移动到运行PHP5.2.15的Linux服务器

网站上有一个大型应用程序表单,它使用javascript、jquery和ajax验证/添加字段,使用json对输入数据进行编码/解码,使用PHP发送电子邮件

此表单在Windows帐户上运行良好。当我把它移到我们的Linux服务器上时,除了发送的电子邮件是空的以外,其他一切都正常工作。有一个PHP错误会随电子邮件一起打印和发送: 警告:为第4行/home/account/public\u html/application/application\u email.tpl中的foreach()提供的参数无效

该文件的前几行如下所示:

<?php 

 $infoArr = get_object_vars( $info );
 foreach( $infoArr as $key=>$val ) {
    $parts = explode( "_", $key );
    $number = array_pop( $parts );
    if( count( $parts ) >= 1 && is_numeric( $number ) )
    {
等等

因此,json_decode似乎不起作用,因此没有将
$\u请求['data']
的内容放入变量
$info

有什么想法吗?我对php并不陌生,但我对json、ajax和这种“情绪化”的东西是陌生的


谢谢大家!

好的,如果您认为$info是空的,那么您应该测试该条件,以便能够优雅地处理它。下面的内容可能看起来很简单,但我想先排除最简单的解决方案,以确保我们以艰难的方式做事。因此,我喜欢在使用变量之前检查它们,因为我厌倦了空引用错误

if( isset($info) )
{
  //... do something
}
else
{
  //... gracefully handle the error
}
至于怀疑json代码不起作用,您应该首先测试$_REQUEST['DATA']变量:

if( isset($_REQUEST['data]) )
{
  // DEBUG -- attempt to view the data:
  print_r($_REQUEST['data']);

  // ... perform json extraction
}
else
{
  // ... handle the error gracefully
}
通常,当您使用HTML表单元素时,数据是通过POST请求发送的。我知道GET/POST请求也会在请求超级全局数组中结束,但您可能需要验证您的数据是否不在POST数组中


让我们知道您的结果:)

好的,如果您认为$info是空的,您应该测试该条件,以便您可以优雅地处理它。下面的内容可能看起来很简单,但我想先排除最简单的解决方案,以确保我们以艰难的方式做事。因此,我喜欢在使用变量之前检查它们,因为我厌倦了空引用错误

if( isset($info) )
{
  //... do something
}
else
{
  //... gracefully handle the error
}
至于怀疑json代码不起作用,您应该首先测试$_REQUEST['DATA']变量:

if( isset($_REQUEST['data]) )
{
  // DEBUG -- attempt to view the data:
  print_r($_REQUEST['data']);

  // ... perform json extraction
}
else
{
  // ... handle the error gracefully
}
通常,当您使用HTML表单元素时,数据是通过POST请求发送的。我知道GET/POST请求也会在请求超级全局数组中结束,但您可能需要验证您的数据是否不在POST数组中


让我们知道你的结果:)

我也有同样的问题。我的JSON在本地服务器(即Windows服务器)中运行良好,当我转换到Linux时,我遇到了相同的问题,在我尝试post-menthod获取数据后,它运行良好。我已将
json\u解码($\u请求['json']
替换为
json\u解码($\u POST['json']
最终发现它工作正常。

我也遇到了同样的问题。我的JSON在本地服务器(即Windows server)中工作正常,当我转换到Linux时,我也遇到了同样的问题,在我尝试post方法获取数据后,它工作正常。我将JSON解码($\u请求['JSON']替换为
JSON解码($\u post['JSON']
终于发现它工作了。

我应该澄清表单不是空的…电子邮件仍然显示来自application\u email.tpl的标记。只是在发送电子邮件之前没有任何表单数据进入模板。我应该澄清表单不是空的…电子邮件仍然显示来自application\u email.tpl的标记。只是在发送电子邮件之前,没有任何表单数据进入模板。Genius!我使用了POST请求,并添加了stripslashes…而且有效!我尝试使用POST-Previor,但没有stripslashes。Genius!我使用POST请求,并添加了stripslashes…并且有效!我尝试使用POST-Previor,但没有stripslashes。