【问题标题】:Send data to server from JavaScript to PHP, getting 500 Error将数据从 JavaScript 发送到服务器到 PHP,得到 500 错误
【发布时间】: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 上的全部代码还是一段代码?因为你的代码中有一个额外的大括号。
  • 这是整个代码。我可以在服务器中找到日志并且知道我可以看到错误。我正在尝试修复它们。谢谢!

标签: php jquery html css ajax


【解决方案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(){
       ....
    });
    

    【讨论】:

    • 好的,不知道,我改一下。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-19
    • 2011-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多