将数据从 JavaScript 发送到服务器到 PHP,得到 500 错误

Posted

技术标签:

【中文标题】将数据从 JavaScript 发送到服务器到 PHP,得到 500 错误【英文标题】:Send data to server from JavaScript to PHP, getting 500 Error 【发布时间】:2015-11-23 01:41:01 【问题描述】:

我一直在寻找将数据从我的网络发送到服务器数据库的代码示例或方法。

找到一些选项后,我决定进行 ajax 调用来发送数据。代码是: html

<form name="form" method="post">
                <p> xxxxxx </p>
                <input type="text" id="xxxxxx" class="textInput"/>
                <p> yyyyyy </p>
                <input type="text" id="yyyyyy" class="dateForm" />
                <p> zzzzzz </p>
                <input type="text" id="zzzzzz" class="dateForm" />
                <input type="image" src="img/submit.png" class="addButton" name="Añadir"/>
    </form>

jquery 代码:

$(document).on("click", ".addButton", function()

        var json = "xxxxxx": $("#xxxxx").val(),
                    "yyyyyy": $("#yyyyyy").val(),
                    "zzzzzz": $("#zzzzzz").val();

        $.ajax(
            type: 'POST',
            url: 'scripts/sendData.php',
            data: param1: json,
            dataType: 'json',
            success: function(data)
            
        );

    );

和php代码:

<?php

    $db = ***connection parameters***;
    $c1 = oci_connect(***connection parameters***);

    if($c1)

        $myJson = json_decode($_POST['param1']);
            $xxxxxx=  $myJson['xxxxxx'];
            $yyyyyy=  $myJson['yyyyyy'];
            $zzzzzz=  $myJson['zzzzzz'];

            $sql = "INSERT INTO table (xxxxxx, yyyyyy, zzzzzz) VALUES (:xxxxxx, 
                to_date(:yyyyyy), to_date(:zzzzzz))";
            $stid = oci_parse($c1, $sql);
            oci_bind_by_name($stid, ':xxxxxx', $xxxxxx);
            oci_bind_by_name($stid, ':yyyyyy', $yyyyyy);
            oci_bind_by_name($stid, ':zzzzzz', $zzzzzz);

            oci_execute($stid);
            oci_free_statement($stid);
            oci_close($c1);

    
    
    ?>

用chrome调试json创建正确,500错误是服务器错误,所以错误一定是在php代码上。连接应该没问题,因为我从服务器正确获取数据。

我已经通过互联网多次更改代码,但仍然无法发送数据:S 谁能告诉错误在哪里?

PD:如果我在 if($c1) 之前添加一个回显并手动输入 ajax 方法中的 url,我什么也得不到。有什么意思吗?

谢谢和问候

【问题讨论】:

php代码在哪里? print_r($myJson); 的输出添加到您的问题中。 只需在表单中使用 action="scripts/sendData.php" 即可。这可能是工作 这是您在 PHP 上的全部代码还是一段代码?因为你的代码中有一个额外的大括号。 这是整个代码。我可以在服务器中找到日志并且知道我可以看到错误。我正在尝试修复它们。谢谢! 【参考方案1】:

你也可以通过这种方式在ajax中传递JSON数据:

$(document).on("click", ".addButton", function()
    var arr=new Array();
    arr.push(
       'asdf': $("#xxxxx").val()
    );
    arr.push(
       'ghjk':$("#yyyyyy").val()
    );
    arr.push(
       'klyx':$("#zzzzzz").val()
    );

    var json=JSON.stringify(arr);

    $.ajax(
            type: 'POST',
            url: 'scripts/sendData.php',
            data: param1: json,
            success: function(data)
            
    );

);

【讨论】:

【参考方案2】:

尝试以下方法:

从 ajax 调用中删除 dataType: 'json'

为 json var 创建一个普通的 javascript 对象,如下所示:

var json = asdf: $("#xxxxx").val(),
            ghjk: $("#yyyyyy").val(),
            klyx: $("#zzzzzz").val();

使用data: param1: JSON.stringify(json)

编辑:

尝试将 ajax-post 绑定到表单提交,而不是单击按钮,用户可以通过按 Enter 或其他方式发送表单...

$(document).on("submit", "form", function()
   ....
);

【讨论】:

好的,不知道,我改一下。谢谢

以上是关于将数据从 JavaScript 发送到服务器到 PHP,得到 500 错误的主要内容,如果未能解决你的问题,请参考以下文章

将 UDP 数据从 Python 发送到 Javascript?

将数据从 javascript/html 页面发送到 Express NodeJS 服务器

如何将音频 blob 从 javascript 发送到 java spring 服务器?

SignalR如何将javascript对象从一个客户端发送到另一个客户端

将数据从 javascript 发送到 Laravel 控制器

将数据从 java 发送到 javascript 页面到 href 函数中