无法使用Ajax向/从服务器发送/检索变量

时间:2014-01-27 16:41:31

标签: javascript php jquery ajax json

与StackOverFlow和整个互联网中的答案相当混淆!我有些问题似乎很容易但有些日子无法解决它们!

在我的场景(在线预订系统)中,我想在FORM(预约的开始时间和持续时间)中输入输入的值并将其发送到SERVER(PHP);在PHP函数中,我将检查它们是否有效(一些SQL查询和PHP函数);然后我将结果返回到JQuery(作为json编码的数组);

目前的片段如下:

我的HTML表单:

<FORM ACTION="add.php" METHOD="post" ID="submitform">
    <INPUT type="text" cols="50" id="starting_time" NAME="starting_time" PLACEHOLDER="Starting Time" /><br />
    <INPUT type="text" id="duration" NAME="duration" PLACEHOLDER="Duration"/><br />
    <P>Suggestions: <span id="txtHint"></SPAN></P>
    <INPUT type="button" value='Add Reservation' id="button" />
    <DIV ID="ajaxfield"></DIV>
</FORM>

我的JQuery和AJAX代码:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js">
</script>
<script>

 $(function(){

 $('#button').click(function(){
 $('#container').append('<img src= "ajax-loader.gif" alt="Currently loading" id="loading" />');

 var str = $('#submitform').serializeArray();

  $.ajax({
        cache: false,
        url: 'availability.php',
        type: 'POST',
        dataType:'JSON',
        data: $str,
        success: function(response){
                resultObj = eval (response);
                alert( resultObj ); 
                }
             });
        });
     });

 </script>

我的PHP:

<?php

  header('Content-Type: application/json');

  $starting_time = $_POST['starting_time'];
  $duration = $_POST['duration'];

  availability($starting_time, $duration);

  function availability($starting_time, $duration) { 
        THE FUNCTION STUFF
    }
   echo json_encode( $arr );
  }

 ?>

现在,问题首先是这不起作用,脚本停留在loader.gif!

第二,如何从PHP操作json数组来执行某些操作,例如启用提交按钮和/或建议适合用户的持续时间。

PS:当然,在最后的情况下,我想在用户按下提交按钮之前立即检查这些内容。

谢谢!


修改

我的问题的某些部分是通过答案的笔记解决的,这是修改过的代码(到现在为止):

    var str = $('#submitform').serialize();
    $.ajax({
        cache: false,
        url: 'availability.php',
        type: 'POST',
        dataType:'JSON',
        data: str,
        success: function(data){
                alert(JSON.stringify(data, null, "\t"))

        }
    });

现在,显然我可以提醒从PHP函数返回的JSON;我只需要修改它来操纵我的目的。

1 个答案:

答案 0 :(得分:1)

首先......我会试着教你一点钓鱼而不只是给你一条鱼......

你说你的代码只是卡在loader.gif上...你已经好几天了,所以我觉得你有足够的时间来检测你的代码停止的位置,以检测你的javascript是否有任何错误代码或您的客户端代码执行是否达到您的服务器代码。

你给我们的唯一信息是它坚持加载器是这行代码:

$('#container').append('<img src= "ajax-loader.gif" alt="Currently loading" id="loading" />');

已被执行。

嗯......现在? 好的,您可以检查以下内容:

  1. 检查str是否包含您希望包含的内容。
  2. 检查执行是否达到availability.php
  3. 检查$ str包含的内容(您尝试传递给服务器的数据)
  4. 当然,在这些检查过程中,你会看到一些疑问,你可以在这里发布一个更详细的问题。