【发布时间】:2015-10-05 18:31:07
【问题描述】:
问题: 通过我的addData() 函数传递的参数中有一个连字符;想想“12345678-9”。每当传递的数据有连字符时,我的应用程序上就会弹出Ajax Fail! 警报框。但是,每当我将 $_GET 变量硬编码为不带连字符的字符串或数字时,我的应用程序的这一部分就可以工作。我已将其范围缩小到连字符导致此错误的可能事实。请参阅下面的代码。
HTML
<button id="add-analysis-button" onClick="addData( $( '#click-number' ).text() )">Add Data</button>
Javascript/jQuery/AJAX
function addData(a_ship) {
$.ajax({
type: 'GET',
url: 'models/add-data.php?oShip=' + a_ship,
mimeType: 'json',
success: function(data) {
alert( data );
},
error: function() {
alert('Ajax Fail!');
}
});
PHP(文件:add-data.php)
<?php
echo $_GET['oShip'];
我尝试过的: 我尝试过在addData() 函数中使用javascript 的替换函数将连字符替换为HTML 编号。例如:a_ship = a_ship.replace('-', '&#45;')。这似乎允许代码部分工作,但随后去掉了连字符后的数字,这导致我遇到另一个问题。
问题:如何在不导致错误的情况下将连字符从 jQuery 的 AJAX 传递到?
【问题讨论】:
-
问题可能出在返回的 JSON 中。调用失败时是什么样子的?
-
试试:
encodeURIComponent -
当调用失败时,我会收到“Ajax 失败!”的警告框。
-
@aCarella 不,我的意思是实际的 HTTP 响应是什么样的?
-
@CodeGodie “-” 字符不必进行 URI 编码。
标签: javascript php jquery ajax get