Ajax根本不发送数据

时间:2011-09-19 09:54:09

标签: php mysql ajax

我正在编写一个脚本,该脚本将使用GET存储的一些数据发送到PHP脚本(然后处理它然后将其放入数据库)。

这是ajax脚本,即时通讯使用jQuery ajax (我已经包含了最新的jQuery脚本)

function send(){
  $.ajax({
     type: "GET",
     url: "http://examplewebsite.com/vars/parse.php",
     data: "id=" + id + "&purl=" + purl + "&send" + "true",
     cache: false,
     success: function(){
       alert("Sent");

     }
  });
}

idpurl是JavaScript变量。

send()功能设置在:

<a href="#" onclick="send()">Send</a>

PHP代码:

<?php

//Connect to database
include ("config.php");

//Get the values
$id = $_GET['id'];
$purl = $_GET['purl'];
$send = $_GET['send'];

if ($send == 'true') {


    $insertdata = "INSERT INTO data (id,purl,send) VALUES ('$id','$purl',+1)";
    mysql_query($insertdata) or die(mysql_error());
} else {
    //do nothing
}
?>

当我输入 http://examplewebsite.com/vars/parse.php?id=123&purl=example&send=true 时 它工作,php按照我的意愿将数据注入数据库,但是当我使用send()并想使用ajax发送数据时,失败了。

我是否有任何错误?

5 个答案:

答案 0 :(得分:5)

发送后你错过了=,

function send(){

  $.ajax({
     type: "GET",
     url: "http://examplewebsite.com/vars/parse.php",
     data: "id=" + id + "&purl=" + purl + "&send=" + "true",
     cache: false,
     success: function(){
       alert("Sent");

     }
  });
}

也应该修复它。发布有关您的JavaScript的更多信息。我们只需要假设id和purl已经填写完毕。您是否尝试过调试它们(如果这不起作用)。

此外,调试所请求的URL,您可以使用firefox或chrome dev-tools。什么URL被发送到PHP页面并且是正确的

答案 1 :(得分:2)

数据字符串中缺少“=”。

 data: "id=" + id + "&purl=" + purl + "&send" + "true",

应该是

 data: "id=" + id + "&purl=" + purl + "&send=" + "true",

答案 2 :(得分:0)

这取决于您运行脚本的位置,因为ajax调用不适用于其他域。如果您需要在http://example1.com上运行js并转到http://example2.com,则需要采用其他方法。

一个想法是使用json

答案 3 :(得分:0)

尝试

data: { id: id, purl: purl, send: true }

看看是否有任何区别

答案 4 :(得分:0)


首先,我建议(如果您使用Chrome或Safari)使用 Web Inspector (右键单击任意位置 - 检查元素),然后按ESC键显示到控制台,这将帮助您验证JS代码。那会告诉你你缺少'='。

其次,我会尝试更简单的事情,以确保你到达文件。

JS:

// Don't forget encoding the data before sending, this is just a simple example
$.get("parse.php?sent=true",
     function(data){
         alert("I think i got a nibble...");
         alert(data);
     }
);

在php文件中:

$sent = (isset($_GET['sent']) && !empty($_GET['sent']))?$sent:false;

if($sent) echo 'whatever data you want back';

确保您确实收到警报,如果是,请从那里开始根据您的数据构建PHP文件。

希望这有助于, 晒。