日期:2014-05-16  浏览次数:20395 次

jq ajax的两个问题 在线等
问题-:我用ajax动态读取的数据有<span><a> a的动态事件可以动态live绑定点击事件,但是我不想要点击事件,我只想获取这个动态生成的<span>里面的html()值 怎么做?

问题二:js函数 如何返回值 这个怎么定义?
//修改钱
function update_pay_money(user_id_updatemoney,kouqian) {
 
 var flag=false;//修改成功标志
 $.ajax(
          {
              type: "get",
              url: "../DB.ashx",
              data: { "userid_pay": user_id_updatemoney, "money_pay": kouqian, "classid": "update_money" },
              datatype: "text",
              success: function (data_money) {
                  if (data_money == "yes")
                      flag = true;

              },
              error: function () {
                  alert("error");
              }
          });
          return flag; 
      }

为什么这样定义的值没有返回? 甚至说 这个flag在单步调试时发现是未定义的?(我那个ajax没有错,加了返回值就函数没有反映)
还有这个我只是做个例子,我实际上的是 读出了 没有付款的订单,然后将总价返回去的。
所以,各位大神就不用说什么 不用定义什么flag 就在success回调的方法那 判断是否修改成功之类的了。

------解决方案--------------------
问题一:
如果ajax返回的数据是html代码,可以用正则表达式匹配其中的<span></span>标签;
或者用转成jquery对象再用选择器查找:$('ajax返回的html字符串').find('span').html()

问题二:
改成同步提交(async: false),就可以让函数在得到查询结果后才返回了。
但是如果查询耗时较长,同步提交会导致浏览器无响应,如果必须用异步提交,可以改变一下函数的使用方式,通过传一个回调函数来实现异步返回结果,例如:

//修改钱
function update_pay_money(user_id_updatemoney,kouqian,getFlag) {
  
var flag=false;//修改成功标志
$.ajax({
type: "get",
url: "../DB.ashx",
data: { "userid_pay": user_id_updatemoney, "money_pay": kouqian, "classid": "update_money" },
datatype: "text",
success