2017-05-16 58 views
0

我想打电话从阿贾克斯一个php另一个PHP PHP的,所以我写了这个我的第一页(的index.php)上:呼叫使用AJAX

<script type="text/javascript"> 
function valid(id) { 
    var element = document.getElementById(id); 

    $.ajax({ 
     url: 'valid.php', 
     type:'POST', 
    data: 
    { 
     url: element.children[0].childNodes[0].nodeValue 
    }, 
    success: function(msg) 
    { 
     console.log('done 1'); 
    } 
    }); 
} 
</script> 

,这里是我的第二个( valid.php):

<script type="text/javascript"> 
console.log('done 2'); 
</script> 
<?php 
if (isset($_GET['url'])) 
{ 
    try 
    { 
     $bdd = new PDO('mysql:host=host;dbname=dbname;charset=utf8', 'id', 'password'); 
     $bdd->exec("INSERT INTO sometable (url) 
VALUES (".$_GET['url'].");"); 
    } 
    catch (Exception $e) 
    { 
     die(); 
    } 
} 
?> 

但是,当我把我的功能,它似乎并不叫valid.php即使控制台显示“Done 1”,“2做”不被任何地方出现方式和数据库保持不变,就像valid.php只是不运行。

我该如何解决这个问题?谢谢!

回答

0

由于您正在使用POST,您需要使用$ _POST而不是$ _GET检索数据。

0

在valid.php中,如果您期待isset($_GET['url'])这是一个GET参数,但您的AJAX请求通过POST发送。您应该将其更改为isset($_POST['url'])

关于valid.php上的console.log('done 2');,它不会被执行,除非您将它附加到index.php主体并评估该特定脚本,但它是多余的,因为console.log('done 1');引用了valid.php请求的完成。

编辑:在您的插入查询中您有$_GET['url'],它应该是$_POST['url']

+0

感谢回复,我没有看到。我改变了这一点,但它仍然是一样的,数据库仍然没有改变。 – Ticki

+1

@Ticki检查我编辑的答案,它应该对你有帮助。 – Joscplan