2011-02-18 11 views
5

में काम नहीं कर रहा है मैं एएसपीएक्स इंजन के साथ एक एमवीसी 3 एप्लीकेशन में काम कर रहा हूं और शुरुआत के बिंदु के रूप में मैंने एक साधारण खोज विकसित की है जो कुछ जानकारी प्राप्त करने के लिए एक JQuery JSON कॉल का उपयोग करती है। कॉल एक पाठ इनपुट से लिया गया पैरामीटर भेजता है और परिणामों के साथ एक तालिका अद्यतन करता है। इस तरह funcion देखो:एमवीसी 3 जेएसओएन कॉल आईआईएस

 function PerformLookup() { 
      var _accountNumber = $('#accountNumber').val(); 

      $.ajax({ 
       url: '/SearchAjax/SearchAccount', 
       type: 'POST', 
       data: '{_accountNumber:'+_accountNumber+'}', 
       dataType: 'json', 
       contentType: 'application/json; charset=utf-8', 
       success: function (data) { 
        UpdateTable(data); 
       }, 
       error: function() { 
        alert('An error occurred while performing the search.'); 
       } 
      }); 

      return false; 
     } 

सर्वर कोड है कि पैरामीटर के साथ एक प्रश्न चलाता है और एक सूची है कि JSON करने के लिए धारावाहिक है JQuery के साथ सामान्य रूप से काम करने की देता है। सर्वर कोड इस तरह दिखता है:

 [HttpPost] 
     public JsonResult SearchAccount(string _accountNumber) 
     { 
      MLIBEntities dbMLIB = new MLIBEntities(); 

      var searchResults = (from s in dbMLIB.Sets 
           where s.setmap1 == _accountNumber 
           select s); 
      return Json(searchResults.ToList()); 
     } 

जैसा कि आप देख यह मुश्किल कुछ भी नहीं है और यह पूरी तरह से काम करता है जब मैं VS2010 से परियोजना चलाने के लिए और अपने आभासी मशीन का उपयोग करें।

समस्या तब होती है जब मैं विंडोज 2008 सर्वर में आईआईएस 7 के साथ प्रोजेक्ट प्रकाशित करता हूं। प्रोजेक्ट सामान्य रूप से चलता है लेकिन जब मैं प्रदर्शन लुकअप फ़ंक्शन चलाता हूं तो मुझे संदेश मिलता है "खोज करते समय एक त्रुटि आई" जिसका अर्थ है कि AJAX कॉल अनुत्तीर्ण होना।

क्या किसी को पता है कि वीआई -2010 आभासी मशीन में पूरी तरह से काम करते समय आईआईएस में कॉल क्यों विफल रहा है? क्या मैं आईआईएस के अनुसार कोई कॉन्फ़िगरेशन खो रहा हूं?

अग्रिम धन्यवाद!

+0

क्या आप AJAX कॉल की प्रतिक्रिया सामग्री है क्या जांच करने के लिए फ़िडलर/HttpWatch/Firebug की तरह usnig उपकरण का प्रयास करें। इसमें कुछ प्रासंगिक जानकारी हो सकती है जो –

उत्तर

10

कभी इस तरह यूआरएल को हार्डकोड क्योंकि जब आप अपने आवेदन को तैनात वहाँ एक वर्चुअल निर्देशिका अपने यूआरएल के लिए prepended हो सकता है:

url: '/SearchAjax/SearchAccount', 

हमेशा यूआरएल सहायकों का उपयोग करते हैं यूआरएल के साथ काम:

url: '<%= Url.Action("SearchAccount", "SearchAjax") %>', 

तो यहां बताया गया है कि मैं आपके कोड को दोबारा कैसे प्रतिक्रिया दूंगा:

function PerformLookup() { 
    var _accountNumber = $('#accountNumber').val(); 
    $.ajax({ 
     url: '<%= Url.Action("SearchAccount", "SearchAjax") %>', 
     type: 'POST', 
     data: JSON.stringify({ _accountNumber: _accountNumber }), 
     dataType: 'json', 
     contentType: 'application/json; charset=utf-8', 
     success: function (data) { 
      UpdateTable(data); 
     }, 
     error: function() { 
      alert('An error occurred while performing the search.'); 
     } 
    }); 
    return false; 
} 

या यदि यह PerformLookup समारोह कहा जाता है जब कुछ लिंक पर क्लिक किया है, मैं लिंक एक HTML सहायक के साथ उत्पन्न होता है:

<%= Html.ActionLink(
    "Perform search", 
    "SearchAccount", 
    "SearchAjax", 
    null, 
    new { id = "search" } 
) %> 

और फिर बस इसे AJAXify:

$(function() { 
    $('#search').click(function() { 
     var _accountNumber = $('#accountNumber').val(); 
     $.ajax({ 
      url: this.href, 
      type: 'POST', 
      // Probably no need to send JSON request 
      // so I've replaced it with a standard 
      // application/x-www-form-urlencoded POST request 
      data: { _accountNumber: _accountNumber }, 
      dataType: 'json', 
      success: function (data) { 
       UpdateTable(data); 
      }, 
      error: function() { 
       alert('An error occurred while performing the search.'); 
      } 
     }); 
     return false; 
    }); 
}); 

और अंत में मैं दृढ़ता से आप FireBug का उपयोग कर की सिफारिश करेंगे जो एक बेहतरीन टूल है जो आपको इस तरह की समस्याओं को डीबग करने की इजाजत देता है क्योंकि यह सभी AJAX अनुरोधों और क्लाइंट और सर्वर के बीच क्या हो रहा है।

+2

को डीबग करने में मदद कर सकती है मैंने यूआरएल सहायक और JSON.stringify फ़ंक्शन के साथ पेश किए गए पहले रिफैक्टर का उपयोग किया था और यह आईआईएस से एक आकर्षण की तरह काम करता था। बहुत बहुत धन्यवाद, आप निश्चित रूप से जानते हैं कि आप क्या कर रहे हैं। – Alvos

0

सिर्फ जावास्क्रिप्ट में पूरा URL डाल:

$.ajax({ 
    type: "POST", 
    url: "/Appnamehere/Controller/Action", ... 

इस काम ठीक ..

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