首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >@$_POST[某事]和$_POST[‘某事’;?

@$_POST[某事]和$_POST[‘某事’;?
EN

Stack Overflow用户
提问于 2014-05-30 22:36:01
回答 2查看 259关注 0票数 0

我的文件中有一个简单的js脚本,名为index.php

代码语言:javascript
复制
$.ajax({
    type:  "POST",
    data:  'a='+hi+'&b='+hello,
    url:   "update.php",
    cache: false,
    success: function() {
        console.log('Ajax success');
    },
    error: function() {
        console.error('Ajax error');
    },
    complete: function() {
        console.log('Ajax complete');
    }
});

在我的控制台中,我有两条信息:成功和完成。

2 vars a和b包含一些东西。我想将这些数据发送到一个名为update.php的文件中,其中包含:

代码语言:javascript
复制
$a = @$_POST['hi'];
$b = @$_POST['hello'];

在我的update.php文件中,如果我做了一个echo $a;,它就不起作用了(什么都没有出现)。如果我做了一个var_dump($_POST);,它会返回:

代码语言:javascript
复制
array (size=0)
  empty

这两个文件在我的with服务器上工作很好,但是在我的本地工作流中没有任何工作。

我不确定我的$a = @$_POST['hi'];。我试着使用$a = $_POST['hi'];,但是它返回:Undefined index: hi (“hello”也是一样的)。

这意味着$a和$b为NULL,但是在我的index.php文件中,2 vars包含了我的内容。

知道怎么解决这个问题吗?提前结束。

EN

回答 2

Stack Overflow用户

发布于 2014-05-30 22:40:37

@会消除错误。但这并不能神奇地发挥作用。您仍然会得到“未定义的索引”错误,但它不再显示。

我认为问题在于你传递数据的方式。尝试将其作为对象传递:

代码语言:javascript
复制
$.ajax({
    type:  "POST",
    data:  { 
       a: hi,  /* 'a' is the key, 'hi' is the value. */
       b: hello },
    url:   "update.php",
    cache: false,
    success: function() {
        console.log('Ajax success');
    },
    error: function() {
        console.error('Ajax error');
    },
    complete: function() {
        console.log('Ajax complete');
    }
});

除了在PHP中使用var_dump($_POST);转储发布信息的全部内容之外,您还可以使用浏览器中的开发人员工具(通常在F12下)检查发布的请求。

如果您使用这些调试工具,那么您可能会注意到,在读取键'hi‘和'hello’时,您可能会发布'a‘和'b’键,这可能是您出错的原因。

Barmar的评论是正确的,您的方法也应该工作得很好,尽管对象表示法更方便,因为它将为您转义特殊字符,我认为它的可读性更强。

票数 3
EN

Stack Overflow用户

发布于 2014-05-30 22:54:07

*不要在开发中使用@

我使用JSON类型为您提供了一个工作示例:

HTML (Index.php):

代码语言:javascript
复制
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
 <head>
  <title>new</title>
  <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  <meta name="generator" content="editplus" />
  <meta name="author" content="" />
  <meta name="keywords" content="" />
  <meta name="description" content="" />
  <script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
  <script type="text/javascript">

   $(document).ready(function(){ 

    $('#click').bind('click', test);

   });

  function test(){

      var hi = 'hi';
      var hello = 'hello';

      var dataString = 'a='+ hi + '&b='+ hello;

         $.ajax({  
              url: "update.php",
              type: "POST",  
              data: dataString,
              dataType:'json',
              cache: false,
              success: function(data)
              {     
                $('div').html(data.succ+' ,a = '+data.a + ', B = ' + data.b+ ' , '+data.time);  
              }
        });  
  return false;
}
  </script>

 </head>

 <body>

  <input type="submit" id="click" value="Click">

<div></div>

 </body >
</html>

update.php:

代码语言:javascript
复制
 <?php

  $a = $_POST['a'];
  $b = $_POST['b'];

  $return = array('succ' => 'true','a' => $a,'b' => $b,'time' => time());
  header('content-type: application/json; charset=utf-8');
  echo json_encode($return);

?>

如您所见,我将把a&b发布到update.php文件中,并将结果返回给index.php。

完美的工作。

编辑:

我还测试了您给出的当前代码,它也在工作:

您可以在网络选项卡上看到响应A和B。

我刚在update.php更改为:

代码语言:javascript
复制
 <?php

    $a = $_POST['a'];
    $b = $_POST['b'];

    echo 'a='.$a;
    echo ',';
    echo 'b='.$b;

?>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23964336

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档