如何从JQuery Ajax调用更新2个文本框

如何从JQuery Ajax调用更新2个文本框,jquery,ajax,json,return-value,Jquery,Ajax,Json,Return Value,在自动完成列表用户选择成功后,我调用Ajax来填写一些值。我现在失去了绘图,我想利用返回的json值 有人能解释一下我应该如何处理返回值和更新文本框吗。谢谢 $("#txtProductName").autocomplete({ source: "_ajprodlist.php", minLength: 2, select: function(event, ui) { $('#txtProductId').val(ui.item.id);

在自动完成列表用户选择成功后,我调用Ajax来填写一些值。我现在失去了绘图,我想利用返回的json值

有人能解释一下我应该如何处理返回值和更新文本框吗。谢谢

$("#txtProductName").autocomplete({
    source: "_ajprodlist.php",
    minLength: 2,
    select: function(event, ui) {
            $('#txtProductId').val(ui.item.id);
            var custid = $('#txtClientId').val();
            var postData = "prodid="+(ui.item.id)+"&custid="+custid;
            $.ajax({ type: "GET",
                    url: "_ajcustprice.php",
                    data: postData,
                    dataType: 'text',
                    success : function(data) {
                    // alert(data); returns values Ok
                    // [{"custid":"12","custprice":"500","lastqty":"20"}]
                    $("#txtClientPrice").val(data.custprice);    // **** not right
                    $("#txtLastQty").val(data.lastqty);          // **** is it !!!
                    },
                    complete : function() { alert('Complete: Do something.'); },
                    error : function() {alert('Error: Do something.'); }
              });
    }
});
我想利用返回的json值

那你为什么期待一个
文本
?(
dataType:'text'
而不是
json

固定代码:

$.ajax({
    type: "GET",
    url: "_ajcustprice.php",
    data: postData,
    dataType: 'json',  // <======= instead of 'text' 
    success: function(data) {
        $("#txtClientPrice").val(data.custprice);
        $("#txtLastQty").val(data.lastqty);
    },
    complete: function() {
        alert('Complete: Do something.');
    },
    error: function() {
        alert('Error: Do something.');
    }
});​
$.ajax({
键入:“获取”,
url:“_ajcustprice.php”,
数据:postData,
数据类型:“json”,//
我想利用返回的json值

那么,为什么您希望使用
文本
?(
数据类型:“text”
而不是
json

固定代码:

$.ajax({
    type: "GET",
    url: "_ajcustprice.php",
    data: postData,
    dataType: 'json',  // <======= instead of 'text' 
    success: function(data) {
        $("#txtClientPrice").val(data.custprice);
        $("#txtLastQty").val(data.lastqty);
    },
    complete: function() {
        alert('Complete: Do something.');
    },
    error: function() {
        alert('Error: Do something.');
    }
});​
$.ajax({
键入:“获取”,
url:“_ajcustprice.php”,
数据:postData,

dataType:'json',/返回的数据是一个带有on元素的数组,因此需要执行以下操作:

$("#txtClientPrice").val(data[0].custprice); 
$("#txtLastQty").val(data[0].lastqty);

当然,假设您已经按照@gdoron的建议更正了数据类型,那么返回的数据是一个带有on元素的数组,因此您需要执行以下操作:

$("#txtClientPrice").val(data[0].custprice); 
$("#txtLastQty").val(data[0].lastqty);

当然,假设您已经按照@gdoron建议更正了数据类型

谢谢您的快速响应gdoron。抱歉,我将datatype:text放入以查看是否有帮助,但没有,然后忘记删除它。如果我删除datatype,默认值似乎仍然是json。警报将数据显示为字符串Ok,但如果我尝试使用警报(数据、价格)我没有定义。不管怎样,文本框都不会从数据中得到更新。有什么想法吗?@KenAshton。是的,按照我的回答尝试使用
dataType:'json'
。你试过了吗?!感谢gdoron的快速响应。对不起,我把dataType:text放进去看看是否有帮助,但没有,然后忘了删除它。如果我删除dataType,默认值似乎是无论如何都是json。警报将数据显示为字符串Ok,但如果我尝试警报(data.custprice)我没有定义。不管怎样,文本框永远不会从数据中更新。有什么想法吗?@KenAshton。是的,按照我的回答,尝试使用
dataType:'json'
。你试过了吗?!完美,立即奏效。我会读更多关于对象的内容。非常感谢。完美,立即奏效。我会读更多关于对象的内容。非常感谢。