将字符串通过Jquery和ajax传递给PHP

时间:2014-04-14 15:11:48

标签: javascript php jquery mysql ajax

我现在已经解决了这个问题一段时间了,我仍然无法理解为什么它不起作用。我尝试了多种可能性,但没有一种可行,所以有人可以帮助我如何通过Ajax传递var superstr = $( "#savelyric" ).text();并进入我的数据库吗?这就是我一直在试验的内容:

        function saveinPHP() {
        //alert("Came here");
        var lyr = $( "#savelyric" ).text();
        var superstr = { lyricsave:lyr }
        //var superstr = 'lol';
        //var hashString = "lol";
        //var data = { yoururl:'hmm'}
        $.ajax({
        type: "POST",
        url: "includes/sendlyrics.php",
        data: superstr,
        success:  function(data){
            alert("***DATA***"+data+"***MSG***");
            alert("Settings has been updated successfully." + data + "~~~" + hashString);
            //window.location.reload(true);
        }
    });
    }

正如你所看到的,我已尝试过多种方式,但它永远不会奏效。我不明白你到底是怎么做到的。 PHP文件是这样的:

<?php 
include ('db_connect.php');

$data = $_POST['data'];

$query = "UPDATE song SET time='".$data."' WHERE id='1'";
mysqli_query($query);

?>

是的,我完全清楚我的数据库容易受到SQL注入攻击,一旦我开始工作,我就会解决这个问题。

这是我尝试过的,但如果您认为有必要,我可以做完全不同的事情。

现在我得到了JS:

function saveinPHP() {
        var superstr = $( "#savelyric" ).text();
        $.ajax({
        type: "POST",
        url: "includes/sendlyrics.php",
        data: {superstr: superstr},
        success:  function(data){
            alert("***DATA***"+data+"***MSG***");
            alert("Settings has been updated successfully." + data + "~~~");
            //window.location.reload(true);
        }
    });

和PHP

<?php 
include ('db_connect.php');

$data = $_POST['superstr'];

$query = "UPDATE song SET lyrtime='".$data."' WHERE id='1'";
mysqli_query($query);
?>

2 个答案:

答案 0 :(得分:0)

您正试图通过var superstr = $( "#savelyric" ).text();作为您的问题说明,但在您的代码中,您实际上正在分配:

var superstr = { lyricsave:lyr }

将其更改为:

var superstr = $( "#savelyric" ).text();

更新(根据Kevin B的评论)

您还需要更改以下内容:

data: {superstr: superstr},

并在你的PHP中:

$data = $_POST['superstr'];

另外,为什么要将其设置为time列?我还没有看过你的表,但是一个疯狂的猜测会告诉我时间是一个不同的数据类型(TIMESTAMP / DATETIME可能?)并拒绝你的数据。您是否要将其设置为名为datalyrics的列或包含文本的任何内容?

答案 1 :(得分:0)

只更改此行:

var superstr = { lyricsave:lyr }

var superstr = { data:lyr }