-3

我花了两个小时来创建一个非常小的 jquery ajax 片段,但这不起作用,这让我抓狂。出了什么问题,我找不到?我实际上不知道如何调试这个:

    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script> 
<script type="text/javascript">
$(function () {
    $('#subForm').submit(function (e) {            
        $.ajax({
            url: 'subscribe.php',
            type: 'GET',
            data: "id = " + 2,  //EDIT: I have changed this to "id=2", but also not working                  
            success: function(result){
                alert("token recieved: " + result);
            },
            error: function() {
                alert('Error occured!')
            },                  
        });
    });
});
</script>

如果直接调用 subscribe.php 可以工作:

<?php  
   include "conf.php";      
   $email = 'test';
   $query = 'INSERT INTO subscribers(email) VALUES("'.$email.'")';
   mysql_query($query);

  echo 'Success';
  exit;    
?>

这给了我文本“发生错误!” 然后页面被重定向到“subscribe.php”。我第一次有 getjson 调用,但它不起作用,我决定将其更改为 .ajax get。

1)为什么会发生错误?

2)然后-即使是错误的,为什么用户被重定向到subscribe.php,这是ajax,为什么用户没有留在同一页面上?

编辑 如果我添加返回 false,则用户不会被重定向到 subscribe.php。这解决了。

这可以通过更改数据来解决:“id=2”。

4

4 回答 4

1

你在data: "id = " + 2. 并且还使用e.preventDefault()

它会做什么?

如果您有空格,那么在发送请求时,该空格也将被视为参数的一部分。

像:id%20=%202

于 2013-02-25T14:54:10.297 回答
1

我认为您的 javascript 中有错误。

data: "id = " + 2

改为尝试:

data: "id="+"2"

否则,您尝试将数字 2 添加到字符串中。

于 2013-02-25T14:54:39.063 回答
1
$.ajax({
    url: '/subscribe.php',
    type: 'GET', 
    data: "{id: 2}",
    dataType: "json",
    async: true,                   
    success: function(result){
        alert("token recieved: " + result);
    },
    error: function() {
        alert('Error occured!');
    },                  
});

并在您的 PHP 中,尝试首先回显 $_GET。

看到您收到从 javascript 发送的带有键值的 get。

于 2013-02-25T14:55:17.380 回答
0

使用这样的东西不是更容易吗?

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
<script>
  $(document).ready(function() {
    $('#subForm').submit(function () { 
      window.open('subscribe.php?id='+id);
    });
  });
</script>

以下是您希望在当前页面中显示结果的情况:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
<script>      
  $(document).ready(function() {
    $('#subForm').submit(function () { 
      $('<PUT THE DIV ID/CLASS HERE>').load('subscribe.php?id='+id);
    });
  });
</script>

PS:我很可能忽略了 OP 不使用它的原因,如果是这种情况,请忽略我的回答。

于 2013-02-25T18:12:24.733 回答