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

时间:2015-08-28 11:43:08

标签: php jquery html css ajax

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

找到一些选项后,我决定进行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我什么也得不到。这有什么意义吗?

谢谢你,问候

2 个答案:

答案 0 :(得分:0)

尝试以下某些操作:

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

为json var创建一个普通的javascript对象:

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

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

修改

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

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

答案 1 :(得分:0)

您还可以通过以下方式在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){
            }
    });

});