PHP数组返回null。

3

我有一个带有按钮的 HTML 表单,该按钮上具有 onclick 事件。

    <form id = "abc" action = "xyz.php" method = "post">
      <input type="button" name="submitButton" value="Submit" 
            id="submitButton" onclick = "Function()">
     </form>

在JS代码中,我正在尝试发布文本框的值,并通过json_encode从PHP获取数组。
var valueToSend = $('#textbox').val();
var imagesReturned = new Array();
$.ajax({
        url: "xyz.php",
        type: "POST",
        data: valueToSend,
        dataType:"json",
        success: function(result) {        
            var data = jQuery.parseJSON(result);
            alert(data);
        }
    });

以下是我的PHP代码:

        if(isset($_POST['valueToSend'])) 
        {
            $searchValues = explode(' ',$_POST['valueToSend']);
           // Some processing here
            echo (json_encode($responseArray));

        }

当我警报数据时,我得到了空值,我错过了什么吗?
谢谢!

1
$responseArray 包含什么内容? - Shoe
这是一个字符串数组。例如,它包含abc,xyz,pqr等。 - user1821499
在使用 parseJSON 的那一行上添加一个断点,查看 result 是否为预期值。 - Ricardo Alvaro Lohmann
你的脚本是否使用任何自定义缓冲? - Gavin
在回调函数中,您不需要使用 var data = jQuery.parseJSON(result);。它已经被解析了。另一方面,您从PHP返回的JSON响应将始终为空。您永远不会发送正确的响应,因为它将包含无效数据。 - N.B.
你不需要解析JSON结果。 - arraintxo
4个回答

3
问题出在您的Ajax请求中,data键需要一个键值对,而不仅仅是一个值。
您需要寻找类似以下的代码:
```javascript $.ajax({ url: "your_url", data: { key1: value1, key2: value2 } }); ```
请注意,键和值之间要用冒号分隔,每个键值对之间要用逗号分隔。
var valueToSend = {
  'valueToSend': $('#textbox').val()
}

此外,您将 dataType 关键字设置为 json,因此无需通过 parseJSON 传递数据变量。因此,success 函数只需要声明如下:

'success': function(result) {
  alert(result);
}

还要注意,由于您设置了dataType:“json”,您不需要解析响应,jQuery会为您完成这项工作,以便您可以直接使用结果对象。 - Mike Brant
你说得完全正确,我会进行更新。感谢你的指出 :) - Joshua Burns

1
var valueToSend = $('#textbox').val();
var imagesReturned = new Array();
$.ajax({
        url: "xyz.php",
        type: "POST",
        data: {"valueToSend":valueToSend},
        dataType:"json",
        success: function(result) {        
            var data = jQuery.parseJSON(result);
            alert(data);
        }
    });

纠正ajax中data的格式


如果我将数据更改为 data: {valueToSend:valueToSend},该功能会返回错误,它不会进入成功函数。 - user1821499

1
你的数据字段看起来让我感到可疑。
   $.ajax({
            url: "xyz.php",
            type: "POST",
            data:{valueToSend:valueToSend},
            dataType:"json",
            success: function(result) {        
                alert(result);
            }
        });

很不幸,改变数据字段不起作用,它会进入错误而不是成功的函数,如果我发送键值对。 如果我只发送值,它将在成功时返回空响应! - user1821499
它不会发出任何警报,如果我添加错误:函数的代码,它就会进入其中。 - user1821499

0

问题出在 PHP 代码中。

我移除了检查 if(isset($_POST['valueToSend'])),现在它可以正常工作了...


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接