2013-06-18 8 views
5

मैं एक निश्चित बटन क्लिक करने के बाद एक अजाक्स कॉल बंद सक्रिय करने के लिए jQuery उपयोग करने का प्रयास कर रहा हूँ करने के लिए कॉल करने में नाकाम रहने। मैं वाक्य रचना और मुद्दों है कि का सामना करना पड़ा हो सकता है के कई उदाहरण पढ़ा है, लेकिन मेरे काम के लिए एक काम कर समाधान खोजने के लिए विफल रहे हैं। कोड यहाँ है।jQuery अजाक्स MVC 4 नियंत्रक विधि

नियंत्रक विधि: (HomeController.cs)

[HttpPost] 
    public JsonResult ChangeCompany(string companyCode) 
    { 
     return Json(new { result = companyCode }, JsonRequestBehavior.AllowGet); 
    } 

jQuery कोड:

function changeCompany(company) { 
    $.ajax({ 
     url: '@Url.Action("ChangeCompany", "Home")', 
     type: 'POST', 
     data: JSON.stringify({ companyCode: company }), 

     success: function (data) { 
      alert("Company: " + data); 
     }, 
     error: function (req, status, error) { 
      alert("R: " + req + " S: " + status + " E: " + error); 
     } 
    }); 
} 

और अंत में, मैं के साथ इस समारोह फोन कर रहा हूँ:

$('.companyButton').click(function() { 
    compCode = $(this).text(); 
    debug("Click event --> " + $(this).text()); 
    changeCompany(compCode); 
}); 

मेरे डिबग संदेश ठीक से प्रदर्शित, और अजाक्स कॉल लगातार निम्न चेतावनी के साथ विफल: R: [object Object] S: error E: Not Found

मैं पूरी तरह यकीन है कि क्या इस बात का बनाने के लिए नहीं कर रहा हूँ।

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

संपादित करें: मामले में यह ध्यान देने योग्य है, यह एक मोबाइल डिवाइस के लिए है। JQuery मोबाइल के साथ विंडोज 8 फोन एमुलेटर (इंटरनेट एक्सप्लोरर) पर परीक्षण। सुनिश्चित नहीं हैं कि अगर है कि सभी

संपादित 2 में अजाक्स प्रभावित करता है: कच्चे नेटवर्क कॉल पर एक नज़र लेने के बाद, ऐसा लगता है कि 'Url.Action("ChangeCompany", "Home")' उचित यूआरएल में परिवर्तित किया जा रहा है और बदले में बुलाया जा रहा है सीधे जैसे कि वह कच्चे यूआरएल थे पाठ। क्या यह पुरानी jQuery, या कुछ अन्य कारक के कारण है?

+0

क्या अपने नियंत्रक कार्रवाई विधि कैसा दिखता है अंदर काम नहीं कर रहा? साथ ही, अपने ब्राउज़र देव उपकरण में कच्चे नेटवर्क कॉल को देखें और देखें कि कॉल क्या है - जो समस्या निवारण में मदद करनी चाहिए। –

+0

मुझे लगता है कि यह एक सर्वर साइड त्रुटि है। जब आप अनुरोध पर क्लिक करते हैं तो आप क्रोम के देव टूल बार नेटवर्क अनुभाग को देख सकते हैं, आप पूर्वावलोकन टैब में प्रतिक्रिया देख सकते हैं। –

+0

आप अपने ब्राउज़र में स्रोत को देखें, तो यूआरएल सही दिखता है? और यदि आप त्रुटि कार्य के अंदर 'डीबगर' सेट करते हैं, तो पैरामीटर पर नज़र डालें। –

उत्तर

6

अपने EDIT2 साथ ठीक है तो यह आपको एक अलग JavaScript फ़ाइल में url: '@Url.Action("ChangeCompany", "Home")', उपयोग कर रहे हैं लगता है। आप केवल .cshtml फाइल के अंदर उस्तरा कोड लिख सकते हैं और यह .js फ़ाइलों

+0

आह, यह समझ में आता है। निश्चित नहीं है कि मैंने सोचा कि मैं इसे दृश्य के बाहर उपयोग कर सकता हूं। – DrBowe

+0

आगे बढ़ गया और अजाक्स कॉल में यूआरएल को कड़ी-कोडित किया और यह ठीक काम करता है, पकड़ने के लिए धन्यवाद! – DrBowe

+0

आप यूआरएल के साथ .cshtml में एक चर बना सकते हैं और इसे .js फ़ाइल में एक्सेस कर सकते हैं –

1

आप अपने AJAX कॉल में कुछ महत्वपूर्ण पैरामीटर मौजूद नहीं हैं। आपके AJAX कॉल के रूप में नीचे बदलें:

function changeCompany(company) { 
    $.ajax({ 
       url: '@Url.Action("ChangeCompany", "Home")', 
       type: 'POST', 
       data: JSON.stringify({ companyCode: company }), 
       success: function (data) { 
         alert("Company: " + data); 
         }, 
      error: function (req, status, error) { 
         alert("R: " + req + " S: " + status + " E: " + error); 
         } 
      });} 

इसके बाद आप नीचे के रूप में विशेषता [HttpPost] के साथ अपने नियंत्रक विधि टिप्पणी कर सकते हैं; कि आपके कार्रवाई companyCode सीधे नहीं लौटा रहा है

[HttpPost] 
public JsonResult ChangeCompany(string companyCode) 
{ 
    return Json(new { result = companyCode }, JsonRequestBehavior.AllowGet); 
} 
+0

मैंने निम्नलिखित किया और एक ही त्रुटि चेतावनी प्राप्त की। यह सुनिश्चित करें कि समस्या क्या है। – DrBowe

0

नोट।

success: function (data) 
    { 
    alert("Company: " + data.result); 
    } 

इसके अलावा इस:: आप इसलिए अपनी सफलता समारोह में परिणाम आप की जरूरत है प्रदर्शित करने के लिए Json result संपत्ति को यह बताए रहे E: Not Found मुझसे कहता है कि आप कुछ मार्ग मुद्दों हो सकता है। आप अपने ChangeCompany कार्रवाई के अंदर एक को तोड़ने बिंदु निर्धारित है, यह मारा जा रहा है?

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