在更改下拉列表中的项目时,我应该通过jQuery进行AJAX调用。 (我正在使用新功能 getJSON ,它会自动将数据类型设置为' JSON',所以我不必指定它。)
我的代码:
<script language="javascript">
$(document).ready(function () {
$('#mydropdown').change (function() {
var lookupPath = "/" + $(location).attr('pathname').split('/')[1] + "/lookup";
var jsonData = '{\"lookupIdentifier\":\"MY_LOOKUP\",\"secondParam\":\"PARAM\"}';
alert('JSON Data is: ' + jsonData);
var jqxhr = $.getJSON(lookupPath, jsonData).done(function(data) {
alert('AJAX Call Completed. Data: ' + JSON.stringify(data));
}).fail(function(d, textStatus, error) {
alert('Failed: ' + d + " textStatus: " + textStatus + " error: " + error);
});
首先,我验证传入的JSON字符串是否正确,没有语法问题:
{"lookupIdentifier":"MY_LOOKUP","secondParam":"PARAM"}
进入失败(),错误:
SyntaxError: JSON.parse: unexpected end of data at line 1 column 1 of the JSON data
有什么想法吗?
答案 0 :(得分:0)
不要自己编码任何数据。 jQuery会这样做,你不需要干涉。
将数据作为对象传递:
$(function () {
$('#mydropdown').change(function () {
$.getJSON("/" + location.pathname.split('/')[1] + "/lookup", {
lookupIdentifier: "MY_LOOKUP",
secondParam: "PARAM"
}).done(function(data) {
console.log('AJAX Call Completed. Data: ', data);
}).fail(function(jqXhr, textStatus, error) {
console.log('Failed', jqXhr, textStatus, error);
});
});
});
不相关,但请使用console.log()
代替alert()
。