2012-01-08 81 views
1

我有点困难。基本上,我通过jQuery和AJAX将表单中的信息发送给MySQL,然后将值返回给我的应用程序。通过AJAX提交值并返回值

我能够将信息添加到我的数据库,但我似乎无法弄清楚如何检索插入的数据的ID。这里是我的代码 -

function submitDeliveryDetails(){ 
    $.ajax({      
     url: "http://www.mydomain.co.uk/mobileapp/add_deliverydetails.php?callback=jsonp1", 
     data: addDeliveryData, // Variable holding said delivery information 
     jsonp: "callback", 
     dataType: "jsonp", 
     success: function(data) { 
      $.each(data, function(index) { 
       alert(data[index].orderId); 
      });      
     },      
     error: function(){      
      //Do Stuff      
     } 
    }) 
} 

这发送的信息很好。我能够添加到数据库,并使用下面的返回ID

$orderId = mysql_insert_id(); 

我然后创建JSON格式此值,

$orderIdArray = array('orderId'=>$orderId); 
echo $_GET['callback'].'('.json_encode($orderIdArray).')'; 

当我在Firebug查看此,我可以看到ID,我需要指导的是如何处理这个ID,让它回到我的应用程序中,因为我越来越'不确定'以我的方式做事!

感谢 罗里

附:我正在使用JSONP,因为我正在处理单独域上的脚本。

纯文本JSON -

({"orderId":125}) 
+0

你可以发布你的PHP页面返回的纯文本JSON。 – 2012-01-08 17:07:23

+0

对不起,我错过了这个,我已经加入到我的问题。 – 2012-01-08 17:09:33

回答

1

AJAX调用是异步的。这意味着ajax调用完成,并且在ajax调用正在进行时以及完成之前,代码中的以下函数将继续执行。因此,你可以对返回值做任何事情,只有在ajax函数的成功处理函数中,或者在你从那里调用的任何函数中。

这需要更改编码流程,但是您需要先进行ajax调用,然后在成功完成ajax调用后继续执行成功处理程序中的流程。

概念上讲,它是这样的:

function submitDeliveryDetails(){ 
    $.ajax({      
     url: "http://www.mydomain.co.uk/mobileapp/add_deliverydetails.php?callback=jsonp1", 
     data: addDeliveryData, // Variable holding said delivery information 
     jsonp: "callback", 
     dataType: "jsonp", 
     success: function(data) { 
      $.each(data, function(index) { 
       alert(data[index].orderId); 
      });      
      // you can now continue on here with whatever you wanted to do 
      // with the the returned JSON data 
      // You can operate on the data here or call other functions 
      // (passing the data as an argument to those functions) 
     },      
     error: function(){      
      //Do Stuff      
     } 
    }) 
} 

submitDeliveryDetails(); 
// nothing else to do here because the ajax call has not completed yet 
// so the returned results from the ajax call is not available yet 
+0

您必须向我们展示返回的JSON的外观以及您尝试的代码。如果'.each()'内部的'alert()'工作,那么显然数据在那里,所以这只是你用什么代码来访问它的问题。如果我们知道数据是什么样的,以及您尝试过哪些功能无效,那么我们只能进一步提供帮助。 – jfriend00 2012-01-08 17:23:44

+0

我已经把JSON作为我的问题的最后一部分,我在alert中使用了data [index] .orderId,这显然是错误的,所以我正在试图弄清楚它是什么,编号为 – 2012-01-08 17:25:56

+0

如果成功处理程序中的'data'不过是'{“orderId”:125}',那么您可以使用'data.orderId'访问'orderId'。 – jfriend00 2012-01-08 17:27:10

0

你应该修改submitDeliveryDetails功能要更成功和错误回调,然后调用那些从jQuery ajax的成功和错误:

function submitDeliveryDetails(options){ 
    $.ajax({      
     url: "http://www.mydomain.co.uk/mobileapp/add_deliverydetails.php?callback=jsonp1", 
     data: addDeliveryData, // Variable holding said delivery information 
     jsonp: "callback", 
     dataType: "jsonp", 
     success: function(data) { 
      if (options && typeof(options.success) === 'function') options.success(data); 
     },      
     error: function(xhr, status, err){      
      if (options && typeof(options.error) === 'function') options.error(xhr, status, err); 
     } 
    }); 
} 

然后调用它:

submitDeliveryDetails({ 
    success: function(order) { 
     alert(order.orderId); 
    }, 
    error: function(xhr, status, err) { 
     // Do Stuff 
    } 
);