2009-02-11 20 views
6

मैं इतनाjQuery getJSON नियंत्रक को

function invokeAction() { 
     var searchText = $("#SearchTextBox").val(); 

     // Invoke MVC controller action 
     $.getJSON("/Home/Results/" + searchText, bindResults); 
    } 

अगर मैं एक चेतावनी यहाँ रखा तरह JSON परिणाम प्राप्त करने के लिए एक नियंत्रक करने के लिए एक पाठ बॉक्स से कुछ पाठ पारित करने के लिए मैं देख सकता हूँ searchText निश्चित रूप से है कि कोशिश कर रहा हूँ किसी भी मान पास नहीं एक मूल्य है, लेकिन जब मैं इस नियंत्रक कार्रवाई पर एक को तोड़ने बिंदु डाल:

public ActionResult Results(string search) 
    { 
     var r = from t in db.Restaurants 
       where SqlMethods.Like(t.Name, "%" + search + "%") || SqlMethods.Like(t.Postcode, search + "%") || SqlMethods.Like(t.CuisineType.Type, search + "%") 
       orderby t.Name ascending 
       orderby t.Rating descending 
       orderby t.NumOfViews 
        descending 
       select t; 

     return Json(r.ToList()); 
    } 

स्ट्रिंग में पारित अशक्त है, फिर भी जब मैं डिबगर में http संदर्भ जाँच मेरी searchtext यूआरएल का एक हिस्सा है।

चूंकि यह शून्य है, क्वेरी कोई परिणाम नहीं देती है।

क्या मुझे यहां कुछ याद आ रही है?

उत्तर

9

मुझे सेवाओं से जेसन लौटने में कुछ समस्याएं आई हैं और मुझे कोई कॉल वापस नहीं मिल रही थी। यह पता चला कि जेसन खराब हो गया था और मैं इसका परीक्षण करने में सक्षम था और सादा AJAX कॉल के त्रुटि विकल्प को संभालने से उन त्रुटियों को प्राप्त कर सकता था।

$.ajax({ 
    type: "GET", 
    url: "Home/Results/", 
    data: { search: searchText }, 
    dataType: "json", 
    error: function(xhr, status, error) { 
    // you may need to handle me if the json is invalid 
    // this is the ajax object 
    }, 
    success: function(json){ 
    alert("Data Returned: " + json); 
    } 
}); 
+0

काम करता है धन्यवाद, मैंने इसका उपयोग किया और एक त्रुटि फंस गई। मैंने फायरबग भी इस्तेमाल किया जिसने मुझे बताया कि मेरे पास एक परिपत्र संदर्भ है। मुझे लगता है कि मुझे अपने डेटाबेस को थोड़ा सा सॉर्ट करना होगा। – ddd

+0

कूल, मुझे खुशी है, तो क्या मुझे जवाब मिल गया है? – bendewey

+0

हां बेंडवे, आप जवाब प्राप्त कर सकते हैं;) – ddd

2

आप अपने मार्ग को ठीक करने और {आईडी} {} के साथ खोज है ताकि इसे सही पैरामीटर के लिए बाध्य करने के लिए प्राप्त करने के लिए बदलने के लिए होगा - कुछ इस तरह का प्रयास करें:

routes.MapRoute("search", "Home/Results/{search}", 
    new { controller = "Home", action = "Results" }); 

आप नहीं करना चाहते हैं ऐसा करने के लिए, आप पैरामीटर

$.getJSON("/Home/Results?search=" + searchText,bindresults); 

एक मानक के रूप में क्वेरी स्ट्रिंग parametername को निर्दिष्ट है कि बाध्यकारी ठीक कर देंगे द्वारा इस तरह कर सकते हैं।

+0

मैं बदल गया है यह t0 $ .getJSON ("/ घर/परिणाम /", {खोज: searchText}, समारोह (डेटा) {चेतावनी ("जी"); movieView.set_data (डेटा);}); जहां डिबगिंग के लिए अलर्ट बॉक्स है। बात यह है कि यह कभी नहीं पहुंचता है। अगर मैं नियंत्रक पर ब्रेकपॉइंट डालता हूं तो यह एक JSON परिणाम देता है। कोई विचार? – ddd

+0

असल में यह उस फ़ंक्शन को कॉल करता है लेकिन केवल तभी जब नियंत्रक कोई परिणाम नहीं देता है। मुझे नहीं लगता कि जब मैं इसका इरादा रखता हूं तो डेटा सेट किया जा रहा है। क्या मुझे पुराने डेटा को साफ़ करने की आवश्यकता होगी? – ddd

+0

एक मूल वापसी जेसन (नया {परिणाम = "हैलो"}) आज़माएं; और देखें कि यह –

संबंधित मुद्दे