javascript - एजेक्स कॉल स्टोर का विस्तार नहीं किया जा रहा है




ajax extjs (3)

अगर अन्य पदों के समान है, लेकिन मैं इसे एक सप्ताह से अधिक समय तक काम करने के बाद यह काम करने के लिए नहीं मिल सकता है तो मैं आगे माफी चाहता हूं अंत में डेटा लौटने के लिए webservice मिला है, मैं देख सकता हूँ कि डेटा लौटा है लेकिन स्टोर इसे लोड नहीं करेगा। एक मामले को छोड़कर: जब मैं एक अर्रेस्टोर बनाऊँ और स्टोर को लोड करने के लिए सेट करेंरेडडेटा मैं ग्रिड में पूरी तरह से गलत प्रतिक्रिया देखता हूं, सभी एक स्तंभ नीचे प्रदर्शित होता है; लेकिन डेटा देखने के लिए सिर्फ खुश है क्या कोई कृपया इस पर एक नज़र डालें और देखें कि मेरा स्टोर डाटा क्यों नहीं लोड कर रहा है और ग्रिड को लोकप्रिय करता है:

   Ext.define('User', {
    extend: 'Ext.data.Model',
    fields: [
         { name: 'connTime', type: 'string' },
         { name: 'userName', type: 'string' },
         { name: 'clientName', type: 'string' },
         { name: 'feedUrl', type: 'string' },
         { name: 'dconnTime', type: 'string' },
         { name: 'errMessage', type: 'string' },
         { name: 'ip', type: 'string' }
  ]
});

var myStore = Ext.create('Ext.data.Store', {
    model: 'User'
 });


 Ext.Ajax.request({
    url: 'http://dfsdfsfsfs/WCFService/WebService1.asmx/getValue',
    method: 'GET',
    success: function (response, options) {
        var s = response.responseText;
        Ext.MessageBox.alert(s, 'WOO WOO');
        myStore.loadData(s);
    },
    failure: function (response, options) {
        Ext.MessageBox.alert('FAILED MF', 'Unable to GET');
    }
});



  var grid = Ext.create('Ext.grid.Panel', {
    store: myStore,
    stateful: true,
    stateId: 'stateGrid',
    columns: [
        {
            text: 'Query',
            width: 25,
            sortable: false,
            dataIndex: 'userName'
        },
        {
            text: 'Count',
            width: 5,
            sortable: true,
            renderer: change,
            dataIndex: 'ip'
        },
        {
            text: 'Last Updated',
            width: 76,
            sortable: true,
            dataIndex: 'connTime'
        },
        {
            text: 'Disconnect Time',
            width: 10,
            sortable: true,
            renderer: change,
            dataIndex: 'dconnTime'
        },
        {
            text: 'Client',
            width: 10,
            sortable: true,
            renderer: change,
            dataIndex: 'clientName'
        }

    ],
    height: 350,
    width: 800,
    title: 'Active Queries',
    renderTo: 'grid-example',
    viewConfig: {
        stripeRows: true
    }
});

.....

मैंने भी ऐसा करने का एक अलग तरह से प्रयास किया और इस एक के साथ मुझे अजाक्स प्रतिक्रिया भी नहीं दिखाई दे रही है:

 var newStore = Ext.create('Ext.data.ArrayStore', {
    model: 'User',
    proxy: {
        type: 'ajax',
        url: 'http://dfsdfsfsfs/WCFService/WebService1.asmx/getValue',
        reader: {
            type: 'json',
            root: 'd',
            successProperty: 'success'
        },
        success: function (response, options) {
            var s = response.responseText;
            Ext.MessageBox.alert(s, 'LA LA LA');
            newStore.loadData(s);
        },
        failure: function (response, options) {
            Ext.MessageBox.alert('FAILED AGAIN', 'SUCKS');
        }
    }
});

संपादित करें:

सर्वर प्रतिक्रिया:

{"d":{"connTime":null,"userName":"101591196589145","clientName":null,
   "feedUrl":null,"dconnTime":null,"errMessage":null,"ip":null}}

"डी" रूट मैन्युअल रूप से मेरे द्वारा जोड़ा गया था और मूल वेबप्रस्पेंस में नहीं है। मैं इसे कब्जा और जड़ जोड़ें:

{"connTime":null,"userName":"101591196589145","clientName":null,"feedUrl":null,
"dconnTime":null,"errMessage":null,"ip":null}}

2 संपादित करें:

  Ext.define('User', {
    extend: 'Ext.data.Model',
    fields: [
         { name: 'value', type: 'string' },
         { name: 'tag', type: 'string' }
    ]
});


var newStore = new Ext.data.JsonStore({
    model: 'User',
    proxy: {
        type: 'ajax',
        url: 'http://localhost:52856/WCFService/WebService1.asmx/getRules',
        reader: {
            type: 'json',
            root: 'rules',
            idProperty: 'value'                
        },
        success: function (response, options) {
            var s = response.responseText;
            Ext.MessageBox.alert(s, 'LA LA LA');
            newStore.loadData(s);
        },
        failure: function (response, options) {
            Ext.MessageBox.alert('FAILED AGAIN', 'SUCKS');
        }
    }
 });

  var grid = Ext.create('Ext.grid.Panel', {
    store: newStore,
    stateful: true,
    columns: [

यह नया जेसन है जो मैं कोशिश कर रहा हूं:

{"rules":[{"value":"101591196589145","tag":"16"},
 {"value":"102890809752267","tag":"16"},    
 {"value":"107821192690513","tag":"16"},    {"value":"111517428886211","tag":"16"},
{"value":"117389718398171","tag":"16"},{"value":"12099149051","tag":"16"},

ठीक है मुझे पता चला कि क्या ext.ajax.request कॉल के साथ समस्या हो सकती है। जब अनुरोध किया जाता है तो स्टोर भी परिभाषित नहीं होता है और इस प्रकार डेटा लोड नहीं हो रहा है। मैं यह कैसे पा सकता हूं?


Answers

वास्तव में यह निश्चित नहीं है कि आपने इस तरह के राज्य में खुद को कैसे प्राप्त किया एसडीके डाउनलोड में एक ग्रिड लोड करने के बहुत सारे उदाहरण हैं। प्रॉक्सी की कोई विफलता / सफलता पद्धति नहीं है

यहाँ पिघला हुआ वर्किंग कोड:

Ext.onReady(function() {

    Ext.define('User', {
        extend: 'Ext.data.Model',
        fields: [{
            name: 'value',
            type: 'string'
        }, {
            name: 'tag',
            type: 'string'
        }]
    });


    var store = new Ext.data.Store({
        model: 'User',
        proxy: {
            type: 'ajax',
            url: 'data.json',
            reader: {
                type: 'json',
                root: 'rules'
            }
        }
    });
    store.load();

    var grid = new Ext.grid.Panel({
        renderTo: Ext.getBody(),
        width: 400,
        height: 400,
        store: store,
        columns: [{
            text: 'Value',
            dataIndex: 'value',
            flex: 1
        }, {
            text: 'Tag',
            dataIndex: 'tag'
        }]
    });
});

यहां, मैं आपको एक उदाहरण दूंगा, बस अपने कोड से तुलना करें

// defining a model
Ext.define('SampleModel', {
    extend: 'Ext.data.Model',
    fields: [
        {name: 'YOUR_ID', type: 'int'},
        {name: 'YOUR_NAME', type: 'string'}
    ]
});

// defining a store
var storeDefinition = new Ext.data.JsonStore({
    model: 'SampleModel',
    proxy: {
        type: 'ajax',
        url: '/your/url/path/data.php',
        reader: {
            // you MUST define root and idProperty
            type: 'json',
            root: 'rootList',
            idProperty: 'YOUR_ID'
        }
    }
});

यहाँ महत्वपूर्ण भागों root और idProperty जैसा कि आपने निर्दिष्ट किया है, root json ऑब्जेक्ट का रूट नोड है। idProperty वस्तु में अद्वितीय आईडी है

success और failure प्रतिक्रिया को पकड़ने के लिए, आपको जेसन ऑब्जेक्ट के अंदर success या failure डेटा वापस करना चाहिए। यह reader अनुभाग में success संपत्ति निर्दिष्ट करने के लिए आवश्यक नहीं है। उदाहरण के लिए;

public function dnr_info()
{
    $dnr    = $this->input->get('dnr', TRUE);
    $subsys = $this->input->get('subsys', TRUE);
    $data['success'] = TRUE;
    $data['data'] = $this->dnr->get_dnr_info($dnr, $subsys);
    echo json_encode($data);
}

समारोह के ऊपर जेसन ऑब्जेक्ट की success संपत्ति वापस आ जाएगी।

और, यहां सर्वर से जेसन ऑब्जेक्ट लौट रहा है।

{"success":true,"data":{"SUBSYS_ART_NR":"136451","ART_NR":"459993","ACTION_DESC":"BAKKAL AKT\u0130V\u0130TES\u0130 (176)","ACTIONS_NR":"130012676","START_DATE":"19.12.2013","STOP_DATE":"16.01.2014","DISCOUNT_TYPE":"SPECIAL PRICE","LEVEL_TYPE":"QUANTITY","LEVEL_IMPACT":"MULTIPLE","BASIS":"ARTICLE","LEVEL_1":"1 ADET","VALUE_1":"5,92","NWW_VK_PREIS":"6.69","KOLLI_VK_PREIS":"6.69"}}
// here is the another sample for root which is articleList, idProperty which is ARTICLE_ID 
{"articleList":[{"ARTICLE_ID":"193","ART_NR":"225","ART_DESC":"27*1\/5LT.M.NEK.TAMEK.","SORTEN_TEXT":"ELMA","VAR":"1","GEBI":"1","SUBSYS_ART_NR":"225","NWW_VK_PREIS":"14.49","KOLLI_VK_PREIS":"14.49","DNR_ID":null,"STATUS":"0"},

मैं इस तरह कुछ होने के लिए फ़ंक्शन हस्ताक्षर को संशोधित करने के लिए एक समाधान का सुझाव देता हूं:

getNewRecordID (intRecordType, strTimestamp) प्राप्त करें और फिर हमेशा टाइमस्टैंप पैरामीटर में भी पास करें, और सर्वर पक्ष पर उस मान को छोड़ दें। यह इस मुद्दे के आसपास काम करता है।





javascript ajax extjs