jQuery AJAX POST to PHP issue



我正在尝试评估id的值,它应该在 POST 中从 jQuery 传递到 PHP。

调用返回 {'id':'99'} ,如果 id 不等于 0,则可以。我想知道为什么($x == "0")没有在我的 PHP 函数中被评估为true

任何帮助将不胜感激!提前谢谢。

j查询:

$( document ).ready(function() {
    $.ajax({
        url: '/more.php',
        type: 'POST',
        data: JSON.stringify({"id" : "0"}),
        success: function(data) {
            $("body").append(data);
        }
    });
});

.PHP:

if (isset($_POST['id'])) {
        $con=mysqli_connect("localhost","user","pass","schema");
        getmore($_POST['id']);
        function getmore($x) {
         if ($x == "0") {
          $sqldata = mysqli_query($con,"SELECT * FROM IRCLOG WHERE DATETIME >= date_sub(curdate(),interval 1 day)");
         }
         else {
          $sqldata = mysqli_query($con,"SELECT * FROM IRCLOG WHERE DATETIME >= date_sub(curdate(),interval 1 day)");
         }
           // your business logic
          $rows = array();
          while($r = mysqli_fetch_array($sqldata)) {
             $rows[] = $r;
          }
          echo json_encode($rows);
        }
    }
else {echo "{'id':'99'}";}
我认为

这可能是因为PHP正在将$_POST['id']转换为整数。请尝试以下操作:

function getmore($x) {
    $x = intval( $x );
    if ($x == 0) {

另一个原因可能是您的 AJAX 发送数据不正确。尝试使用:

data: {id : "0"}

在 AJAX 请求中。

AJAX 调用中的data设置接受PlainObjectString参数。从文档中:

如果还不是字符串,则会将其转换为查询字符串。它 附加到 GET 请求的 url。请参阅processData选项 防止此自动处理。对象必须是键/值对。如果 value 是一个数组,jQuery 使用相同的键序列化多个值 基于传统设置的值(如下所述)。

你为什么不使用

$(document).ready( function() {
    var id_main = 0;
        $.ajax ({
            type: "POST",
            url: "/more.php",
            data: { id: id_main },
    });
});

像这样发送数据。data: {"id" : "0"},

最新更新