2016-12-18 29 views
1

如果我有,爲了查詢底層數據庫。需要幾個查詢字符串參數的web服務,我應該將它們放置在URL或我可以將它們放入一個變量,然後傳遞給$ .ajax請求的數據參數?我的部分問題很簡單 - 數據參數究竟代表什麼?

在下面的代碼片段,TargetURL中成功傳遞的URL。但是,當我嘗試傳遞參數作爲數據參數(數據:參數)時,調用失敗。

function JSONTest() { 
 

 
     //var targetURL = "http://localhost:49633/compass/compatability/webservices/SearchDatabase.ashx?mode=contact&searchvalue=" + encodeURI(document.getElementById("jsonInput").value) + "&format=json"; 
 
     var targetURL = "http://localhost:49633/compass/compatability/webservices/SearchDatabase.ashx"; 
 
     var parameters = "mode=contact&searchvalue=da&format=json"; 
 

 
     document.getElementById("targetURL1").innerText = targetURL; 
 
     document.getElementById("ResultTable").innerHTML = ""; 
 

 
     $.ajax({ 
 
      type: "POST", //rest Type 
 
      url: targetURL, 
 
      data: parameters, 
 
      async: false, 
 
      contentType: "application/json; charset=utf-8", 
 
      dataType: "json", 
 
      complete: function (jqXHR, textStatus) { 
 
       jsonResponse = $.parseJSON(jqXHR.responseText); 
 
       for (i = 0; i < jsonResponse.length; i++) { 
 
        if (i % 2 == 0) { 
 
         createTableRow(i, "tableRow"); 
 
        } else { 
 
         createTableRow(i, "tableRowAlternating"); 
 
        } 
 
       } 
 
       document.getElementById("ReturnTest2").style.display = "block"; 
 
      } 
 
     }); 
 
    };

+0

的數據屬性是什麼被髮送到服務器....但你混合urlencoded的字符串和JSON的contentType ....所以什麼類型你真的希望在服務器上接收? – charlietfl

回答

0

如果你想JSON發送作爲您的contentType暗示,那麼你需要從urlencoded的字符串更改數據通過與當時的對象字符串化該對象

var data = { 
    mode: 'contact', 
    searchvalue: 'da', 
    format: 'json' 
} 
var parameters = JSON.stringify(data); 

開始JSON如果你期待在服務器的標準格式編碼的數據然後刪除:

contentType: "application/json; charset=utf-8", 

也從來沒有使用async: false,它已被棄用,一直是一個可怕的做法

+0

那麼數據用於發送JSON到服務器,如果我需要通過QueryString發送參數,我應該把它們放在URL? –

+0

如果你使用'GET',那麼jquery會把它們放到你的url中。在鍋中發送數據的默認值不是json它是* application/x-www-form-urlencoded * – charlietfl

+0

這是正確的嗎? {mode:「contact」,searchvalue:「da」,format:「json」}不會被轉換爲查詢字符串參數並且不等於mode = contact&searchvalue = da&format = json –