【问题标题】:PHP array returns nullPHP 数组返回 null
【发布时间】:2013-04-16 17:47:17
【问题描述】:

我有一个带有 onclick 事件按钮的 html 表单

    <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));

        }

当我提醒数据时,我得到空值,我错过了什么?

谢谢!

【问题讨论】:

  • $responseArray 包含什么?
  • 它是一个字符串数组。例如,它包含abc,xyz,pqr等。
  • 在你使用parseJSON的那一行加一个断点,看看result是不是预期的值。
  • 您的脚本是否使用任何自定义缓冲?
  • 您的回调中不需要var data = jQuery.parseJSON(result);。它已经被解析了。另一方面,来自 PHP 的 JSON 响应将始终为空。您永远不会发送正确的响应,因为它会包含无效数据。

标签: php ajax json


【解决方案1】:

问题出在您的 Ajax 请求中,data 键需要一个键/值对,而不仅仅是一个值。

您要查找的内容类似于以下内容:

var valueToSend = {
  'valueToSend': $('#textbox').val()
}

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

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

【讨论】:

  • 另请注意,由于您设置了dataType:"json",因此您不需要解析响应,jQuery 会为您完成此操作,以便您可以直接使用结果对象。
  • 你说得对,我会更新的。谢谢你发现:)
【解决方案2】:
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的格式

【讨论】:

  • 如果我将数据更改为数据:{valueToSend:valueToSend},函数返回错误,它不会进入成功函数。
【解决方案3】:

你的数据字段在我看来很可疑

   $.ajax({
            url: "xyz.php",
            type: "POST",
            data:{valueToSend:valueToSend},
            dataType:"json",
            success: function(result) {        
                alert(result);
            }
        });

【讨论】:

  • 不幸的是,更改数据字段不起作用,它进入错误而不是成功函数,如果我发送键:值对..如果我只发送值它的成功与空响应!
  • 它不会提醒任何东西,如果我为 Error : 函数添加代码,它会在里面。
【解决方案4】:

问题出在 PHP 代码中。

我删除了检查 if(isset($_POST['valueToSend'])) 及其工作...

【讨论】:

    猜你喜欢
    • 2013-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-11
    • 2017-11-11
    • 2015-01-21
    相关资源
    最近更新 更多