无法从php中的jquery post获取值

时间:2016-04-04 12:12:10

标签: php jquery

我已经在choose-item.php中编写了这段代码

function myFunction() {
    var values =[];
    $('#sortable2').each(function(){// id of ul
  var li = $(this).find('li')//get each li in ul
   var res = li.text().split("::");
    var myJsonString = JSON.stringify(res);
  $.post("choose-items.php", {"result": myJsonString});

console.log(myJsonString)//get text of each li*/
})

}

在同一页面中我添加了这个php脚本

if(!empty($_POST['result']))
 {
      $res = $_POST['result'];
 echo "alert('$res')";
 }

但我没有得到我的php变量的结果。

任何人都可以帮忙吗? 感谢

2 个答案:

答案 0 :(得分:1)

如果您在$ _POST中使用错误的变量名来引用实际上不存在的变量名,那么您将无法获得所需变量的值:

//$_POST['result[]'] do not exists but $_POST['result'] is what you passed in $.post
if(!empty($_POST['result[]']))
 {
      $res = $_POST['result'];
      echo "alert('$res')";
 }

您应该将if条件更正为:

 if(!empty($_POST['result']))
 {
      $res = $_POST['result'];
      echo "alert('$res')";
 }

同样,当您使用同一页面返回您的ajax响应时  你应该使用条件检查在页面顶部移动ajax的进程逻辑,以便它只在ajax被触发时执行而不是在页面加载时执行。代码应该是这样的

// Conditional statements to allow ease of HTML
if(!empty($_POST['result'])):
    $res = $_POST['result'];
    echo "alert('$res')";
    exit;
else:
    // your normal page content
endif;

您应该在脚本顶部执行print_r以了解实际发布的内容,或者您​​可以检查控制台ajax请求是否相同

echo "<pre>"
print_r($_POST);
echo "</pre>"

答案 1 :(得分:1)

jQuery可能是这样的:

[...]
    $.post("choose-items.php", {"result": myJsonString})
        .done(function (data)
        { alert(data); }); // Your alert can be inside the function
[...]

PHP可以是这样的:

if(isset($_POST['result']) && !empty($_POST['result'])):
    $res = $_POST['result'];
    echo $res; // This is the data you're passing back
endif;

但是,您的回复不准确,因为您未将其发送到通用处理程序页面,然后是您要发送的回复($res)。

请求将收到的响应是处理程序在屏幕上显示的任何,因此在您的情况下,您的响应将是您的正常页面。

  

TL; DR&amp; IMO: 您应该创建一个新的PHP文件来处理这个问题,这样您的代码就会被布局,因此您的响应不会与页面内容混淆。