2014-04-14 68 views
-1

我一直在为这个问题困扰了一段时间,我仍然不明白为什么它不起作用。我已经尝试了多种可能性,但没有一个可以工作,所以有人可以帮助我如何通过Ajax将var superstr = $("#savelyric").text();传入我的数据库?这就是我一直在尝试用:将字符串通过jquery和ajax传递给PHP

 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); 
?> 
+0

http://stackoverflow.com/questions/20150130/ajax-and-php-to-enter-multiple-forms-input - 数据库/ 20150474#20150474 – MonkeyZeus

+1

'$ data = $ _POST ['data'];'应该是'$ data = $ _POST ['songsave'];' – MonkeyZeus

+1

为什么你期望你的数据在'$ _POST [ '数据']'?你发布的对象是'superstr',所以它只有'lyricsave'这个键。您是否已经使用'var_dump'查看'$ _POST'内是否有任何内容? –

回答

0

您正在试图通过var superstr = $("#savelyric").text();你的问题的状态,但在你的代码实际上是分配:

var superstr = { lyricsave:lyr } 

将其更改为:

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

UPDATE(每凯文B的评论)

您还需要进行以下更改:

data: {superstr: superstr}, 

,并在你的PHP:

$data = $_POST['superstr']; 

而且,你为什么特林将其设置为time列?我还没有看到你的表格,但一个疯狂的猜测会告诉我,时间是一种不同的数据类型(TIMESTAMP/DATETIME也许?),并拒绝你的数据。你不想将它设置为名为datalyrics或任何包含文本的列吗?

+0

我的数据库设置了歌曲ID,名称,艺术家,歌词和时间。时间是“longtext”,因为时间不是“日期时间”,所以歌曲中的歌曲时间会突出显示:) – Niklas

+0

'var superstr = $(“#savelyric”).text();'将不起作用,数据选项需要键/值对或paramstring。假设他在php中读取正确的表单值并且.text()获得正确的值,他已经在做的工作应该已经奏效。 –

+0

如果您只是在代码中进行更改,则只会将字符串作为帖子的主体发送。这不会出现在'$ _POST'中,因为它不是'键'值对。 –

0

只有改变这一行:

var superstr = { lyricsave:lyr } 

var superstr = { data:lyr } 
相关问题